1. 程式人生 > >python_如何在一個for循環中叠代多個可叠代對象?

python_如何在一個for循環中叠代多個可叠代對象?

rom pre blog get 循環 div 考試成績 ron 語文

案例:

  1. 某班學生期末考試成績,語文、數學、英語分別存儲在3個列表中,同時叠代三個列表。,計算每個學生的總分(並行)
  2. 某年級有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循環中叠代多個可叠代對象?