案例:
- 某班學生期末考試成績,語文、數學、英語分別存儲在3個列表中,同時迭代三個列表。,計算每個學生的總分(並行)
- 某年級有4個班,某次英語成績分別記錄在4個列表中,依次迭代每個列表,統計全年級高於90分人數
如何解決?
1. 方法1:通過索引
#!/usr/bin/python3
from random import randint
def get_result(chinese, math, english):
total = []
# 循環索引進行取值,畢竟列表等長且成績對應
for index in range(len(chinese)):
total.append(chinese[index] + math[index] + english[index])
return total
if __name__ == '__main__':
# 生成 3 個成績列表
chinese = [randint(60, 100) for _ in range(40)]
math = [randint(60, 100) for _ in range(40)]
english = [randint(60, 100) for _ in range(40)]
# 統計 總成績
total = get_result(chinese, math, english)
for x in total:
print(x)
方法2: 通過zip函數,同時迭代3個列表
#!/usr/bin/python3
from random import randint
def get_result(chinese, math, english):
total = []
# 通過zip函數進行迭代,實現同時迭代 3 個對象
for c, m, e in zip(chinese, math, english):
print(c, m, e)
total.append(c + m + e)
return total
if __name__ == '__main__':
# 生成 3 個成績列表
chinese = [randint(60, 100) for _ in range(40)]
math = [randint(60, 100) for _ in range(40)]
english = [randint(60, 100) for _ in range(40)]
# 統計 總成績
total = get_result(chinese, math, english)
for x in total:
print(x)
2. 方法1: 通過 itertools中 chain方法
#!/usr/bin/python3
from random import randint
from itertools import chain
def get_result(e1, e2, e3):
# 通過chain函數進行連續竄行迭代3個列表
for i in chain(e1, e2, e3):
print(i)
if __name__ == '__main__':
# 生成 3 個班成績單,1班36人,2班43人,3班40人
e1 = [randint(60, 100) for _ in range(36)]
e2 = [randint(60, 100) for _ in range(43)]
e3 = [randint(60, 100) for _ in range(40)]
# 依次打印成績
get_result(e1, e2, e3)
