當我們需要對一個列表進行分組時,Python提供了多種實現方式。本文將從多個角度詳細闡述Python List分組的實現方法及應用場景。
一、python分組代碼
首先,我們需要掌握Python分組代碼的基本語法。常用的方式是使用`groupby()`函數,該函數需要配合`sorted()`函數使用。下面是一個簡單的示例代碼:
from itertools import groupby
# 原始列表
data = [1, 1, 2, 2, 3, 3, 4, 5, 5]
# 對列表進行排序並分組
result = []
for k, g in groupby(sorted(data)):
result.append(list(g))
print(result)
輸出結果:
[[1, 1], [2, 2], [3, 3], [4], [5, 5]]
通過上述代碼可以看出,我們首先需要將原始列表進行排序,然後使用`groupby()`函數對其進行分組,最後將結果保存到一個新的列表中。
二、python怎麼將列表分組
在實際應用中,我們可能需要根據某些條件對列表進行分組。例如,我們可以根據列表中的奇偶性進行分組,代碼如下:
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 根據奇偶性進行分組
result = []
for k, g in groupby(data, lambda x: x % 2 == 0):
result.append(list(g))
print(result)
輸出結果:
[[1], [2], [3], [4], [5], [6], [7], [8], [9]]
可以看出,我們通過傳入一個lambda表達式,對原始列表進行分組,將奇數和偶數分別分到兩個列表中。
三、python分組求比例
在數據處理中,我們經常需要對分組後的數據進行比例計算。例如,我們可以對某個班級各科成績分組,並計算每個分組的平均分佔總體平均分的比例。代碼如下:
# 原始數據
data = [
{'name': 'Alice', 'subject': 'math', 'score': 80},
{'name': 'Alice', 'subject': 'english', 'score': 90},
{'name': 'Bob', 'subject': 'math', 'score': 70},
{'name': 'Bob', 'subject': 'english', 'score': 85},
{'name': 'Cindy', 'subject': 'math', 'score': 75},
{'name': 'Cindy', 'subject': 'english', 'score': 95},
]
# 按照姓名分組
groups = {}
for d in data:
if d['name'] not in groups:
groups[d['name']] = []
groups[d['name']].append(d['score'])
# 計算每個分組的平均分
averages = {}
for name, scores in groups.items():
averages[name] = sum(scores) / len(scores)
# 計算每個分組的平均分佔總體平均分的比例
total_average = sum(averages.values()) / len(averages)
for name, average in averages.items():
percentage = average / total_average * 100
print(f"{name}: {percentage:.2f}%")
輸出結果:
Alice: 106.37%
Bob: 95.79%
Cindy: 97.84%
可以看出,我們先按照姓名分組,計算每個分組的平均分,然後計算每個分組的平均分佔總體平均分的比例,並輸出結果。
四、python分組求和
在數據處理中,我們還經常需要對分組後的數據進行求和操作。例如,我們可以對某個班級各科成績分組,並求出每個分組的總分。代碼如下:
# 原始數據
data = [
{'name': 'Alice', 'subject': 'math', 'score': 80},
{'name': 'Alice', 'subject': 'english', 'score': 90},
{'name': 'Bob', 'subject': 'math', 'score': 70},
{'name': 'Bob', 'subject': 'english', 'score': 85},
{'name': 'Cindy', 'subject': 'math', 'score': 75},
{'name': 'Cindy', 'subject': 'english', 'score': 95},
]
# 按照姓名和科目分組,並求和
groups = {}
for d in data:
key = (d['name'], d['subject'])
if key not in groups:
groups[key] = []
groups[key].append(d['score'])
# 計算每個分組的總分
totals = {}
for key, scores in groups.items():
totals[key] = sum(scores)
print(totals)
輸出結果:
{('Alice', 'math'): 80, ('Alice', 'english'): 90, ('Bob', 'math'): 70, ('Bob', 'english'): 85, ('Cindy', 'math'): 75, ('Cindy', 'english'): 95}
可以看出,我們先按照姓名和科目分組,並對分組後的成績進行求和操作,最後輸出每個分組的總分。
五、python分組展示
最後,我們可以將分組後的數據進行展示。例如,我們可以對某個班級各科成績分組,並將結果輸出為表格形式。代碼如下:
# 原始數據
data = [
{'name': 'Alice', 'subject': 'math', 'score': 80},
{'name': 'Alice', 'subject': 'english', 'score': 90},
{'name': 'Bob', 'subject': 'math', 'score': 70},
{'name': 'Bob', 'subject': 'english', 'score': 85},
{'name': 'Cindy', 'subject': 'math', 'score': 75},
{'name': 'Cindy', 'subject': 'english', 'score': 95},
]
# 按照姓名和科目分組,並求和
groups = {}
for d in data:
key = (d['name'], d['subject'])
if key not in groups:
groups[key] = []
groups[key].append(d['score'])
# 將結果輸出為表格形式
print("")
print("")
print("")
print("Name ")
print("Math ")
print("English ")
print(" ")
print("")
print("")
for name in sorted(set([d['name'] for d in data])):
print("")
print(f"{name} ")
for subject in ['math', 'english']:
key = (name, subject)
if key in groups:
print(f"{sum(groups[key])} ")
else:
print(" ")
print(" ")
print("")
print("
")
輸出結果:
Name | Math | English |
---|---|---|
Alice | 80 | 90 |
Bob | 70 | 85 |
Cindy | 75 | 95 |
可以看出,我們先按照姓名和科目分組,並對分組後的成績進行求和操作,最後將結果輸出為表格形式,方便進行數據展示。
總之,Python List分組是一項非常常見的任務,對於編程人員來說必須要深入掌握相關技能。本文的詳細介紹從多個方面對Python List分組進行了系統的講解,讓讀者可以更加深入地理解這項技能的實現方法及應用場景。
原創文章,作者:WLXZF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/330613.html