python3 如何得到最长组合

通常情况下如果想将两个列表组全到一起输出,可以使用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)
原文地址:https://www.cnblogs.com/Andy963/p/7044732.html