通常情况下如果想将两个列表组全到一起输出,可以使用zip函数,最后会以元组的形式得到结果:
#!/usr/bin/env python #coding:utf-8 # Created by Andy @ 2017/6/18 list1 = {1, 3, 5, 7, 9} list2 = {2, 3, 4,5, 6, 7, 8, 9, 10} for i in zip(list1, list2): print(i) # (9, 2) (3, 3) (5, 4) (1, 5) (7, 6)
可是这样缺陷也很明显,因为zip会截取最短的那个列表,但是有些特殊情况下会需要最长列表,那要怎么做呢?
from itertools import zip_longest for j in zip_longest(list1, list2): print(j) # (9, 2) (3, 3) (5, 4) (1, 5) (7, 6) (None, 7) (None, 8) (None, 9) (None, 10)
那些只有一个列表中有的值会被None填充,但是,我们其实也是可以指定填充的值的,或者指定一个
关键字参数fillvalue
for m in zip_longest(list1, list2, fillvalue=11): print(m)
指定以11这个值来填充后面只在list2中存在的值:
结果如下:
(9, 2) (3, 3) (5, 4) (1, 5) (7, 6) (11, 7) (11, 8) (11, 9) (11, 10)