如何使用 itertools.zip_longest 获取嵌套列表中的值
How to get the value in a nested list using itertools.zip_longest
我有两个列表,我想使用 itertool.zip_longest 来比较列表中的某些值并执行其他操作,这是我到目前为止编写的代码
import itertools
List1 = [['a'],['B']]
List2 = ['A','b','C']
for a in List1:
for i in itertools.zip_longest(a,List2):
print (i)
但这就是我得到的结果,我仍在努力解决这个问题
('a', 'A')
(None, 'b')
(None, 'C')
('B', 'A')
(None, 'b')
(None, 'C')
我正试图得到这样的东西
('a', 'A')
('B', 'b')
(None, 'C')
所以我可以直接比较值
对于该结果,您需要将列表 a
展平,您可以使用 itertools.chain
:
>>> list(itertools.izip_longest(itertools.chain(*List1),List2))
[('a', 'A'), ('B', 'b'), (None, 'C')]
您可以使用生成器表达式来展平 list1:
List1 = [['a'],['B']]
List2 = ['A','b','C']
print(list(itertools.zip_longest((b for a in List1 for b in a),List2))
[('a', 'A'), ('B', 'b'), (None, 'C')]
如果你想比较只是遍历 zip_longest 对象解包:
for a, b in itertools.zip_longest((b for a in List1 for b in a),List2):
if a == b:
# do whatever
要设置特定的默认值,请使用 fillvalue:
List1 = [['a'],['B']]
List2 = ['A','b','C']
print(list(itertools.zip_longest((b for a in List1 for b in a),List2,fillvalue="foo")))
[('a', 'A'), ('B', 'b'), ('foo', 'C')]
我有两个列表,我想使用 itertool.zip_longest 来比较列表中的某些值并执行其他操作,这是我到目前为止编写的代码
import itertools
List1 = [['a'],['B']]
List2 = ['A','b','C']
for a in List1:
for i in itertools.zip_longest(a,List2):
print (i)
但这就是我得到的结果,我仍在努力解决这个问题
('a', 'A')
(None, 'b')
(None, 'C')
('B', 'A')
(None, 'b')
(None, 'C')
我正试图得到这样的东西
('a', 'A')
('B', 'b')
(None, 'C')
所以我可以直接比较值
对于该结果,您需要将列表 a
展平,您可以使用 itertools.chain
:
>>> list(itertools.izip_longest(itertools.chain(*List1),List2))
[('a', 'A'), ('B', 'b'), (None, 'C')]
您可以使用生成器表达式来展平 list1:
List1 = [['a'],['B']]
List2 = ['A','b','C']
print(list(itertools.zip_longest((b for a in List1 for b in a),List2))
[('a', 'A'), ('B', 'b'), (None, 'C')]
如果你想比较只是遍历 zip_longest 对象解包:
for a, b in itertools.zip_longest((b for a in List1 for b in a),List2):
if a == b:
# do whatever
要设置特定的默认值,请使用 fillvalue:
List1 = [['a'],['B']]
List2 = ['A','b','C']
print(list(itertools.zip_longest((b for a in List1 for b in a),List2,fillvalue="foo")))
[('a', 'A'), ('B', 'b'), ('foo', 'C')]