如何在一个for循环中迭代多个可迭代对象?
案例:
1.某班学生期末考试成绩,语文、数学、英语分别存储在3个列表中,同时迭代三个列表。,计算每个学生的总分(并行)
2.某年级有4个班,某次英语成绩分别记录在4个列表中,依次迭代每个列表,统计全年级高于90分人数
如何解决?
第一题解决思路:
[code language="lang=python""]
# -*- coding: utf-8 -*-
__author__ = 'songhao'
from random import randint
# 产生语文,数学,英语的成绩
chinese = [randint(60,100) for _ in range(100)]
math = [randint(60,100) for _ in range(100)]
enghlish = [randint(60,100) for _ in range(100)]
if __name__ == '__main__':
for i in range(100):
print(chinese[i]+math[i]+enghlish[i])
第一题解决思路二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# -*- coding: utf-8 -*- __author__ = 'songhao' from random import randint # 产生语文,数学,英语的成绩 def get_all(a, b, c): all_score = [] for aa, bb, cc in zip(a, b, c): all_score.append(aa + bb + cc) return all_score if __name__ == '__main__': chinese = [randint(60, 100) for _ in range(100)] math = [randint(60, 100) for _ in range(100)] enghlish = [randint(60, 100) for _ in range(100)] print(get_all(chinese,enghlish,math)) |

2.某年级有4个班,某次英语成绩分别记录在4个列表中,依次迭代每个列表,统计全年级高于90分人数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# -*- coding: utf-8 -*- __author__ = 'songhao' from random import randint # 产生语文,数学,英语的成绩 def get_more_9(a, b, c): count = 0 for x in chain(a, b, c): if x > 90: count += 1 return count if __name__ == '__main__': chinese = [randint(60, 100) for _ in range(400)] math = [randint(60, 100) for _ in range(30)] enghlish = [randint(60, 100) for _ in range(200)] print(get_more_9(chinese, enghlish, math)) |

拓展: itertools chain
chain 的使用形式如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
chain(iterable1, iterable2, iterable3, ...) #chain 接收多个可迭代对象作为参数,将它们『连接』起来,作为一个新的迭代器返回。 >>> from itertools import chain >>> >>> for item in chain([1, 2, 3], ['a', 'b', 'c']): ... print item ... 1 2 3 a b c |
