python_如何在一個for循環中叠代多個可叠代對象?
阿新 • • 發佈:2017-07-29
rom pre blog get 循環 div 考試成績 ron 語文
案例:
- 某班學生期末考試成績,語文、數學、英語分別存儲在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)
python_如何在一個for循環中叠代多個可叠代對象?