案例:
某班学生期末考试成绩,语文、数学、英语分别储存在3个列表中,同时迭代三个列表,计算每个学生的总分(并行)
import random
chinese = [random.randint(60,100) for _ in range(50)] #假设班级有50名学生,每个学生随机生成60-100之间的分数,生成三科的成绩列表
mathematics = [random.randint(60,100) for _ in range(50)]
english = [random.randint(60,100) for _ in range(50)]
一般for循环语句:
for i in range(len(chinese)): #因为三科分数列表长度一样,只要选择其中一科列表进行迭代
print(chinese[i] + mathematics[i] + english[i]) #每个学生的三科成绩进行相加获取总分
使用zip并行迭代:
total = []
for c,m,e in zip(chinese,mathematics,english): #利用zip进行序列解包
total.append(c+m+e) #每个学生的三科成绩进行相加获取总分并加进列表中
print(total)
案例:
某年级有4个班,某次考试每班英语成绩分别存储在4个列表中,依次迭代每个列表,统计全学年成绩高于90分人数(串行)
import random
from itertools import chain #使用标准库中的itertools.chain,它能将多个可迭代对象连接
e1 = [random.randint(60,100) for _ in range(50)] #假设班级有50名学生,每个学生随机生成60-100之间的英语分数,生成班级英语成绩列表
e2 = [random.randint(60,100) for _ in range(45)]
e3 = [random.randint(60,100) for _ in range(48)]
e4 = [random.randint(60,100) for _ in range(52)]
count = 0 #定义初始符合条件的学生人数
for s in chain(e1,e2,e3,e4): #把4个班级的序列放进chain参数中进行串行迭代
if s > 90:
count += 1 #如果符合条件的学生就让人数自增1,统计总共符合条件的学生人数
print(count)