这是我的代码片段
from itertools import zip_longest
list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
args = [iter(list1)] * 4
zipped = zip_longest(*args, fillvalue=None)
for j in zipped:
print(j)
我期望它输出类似于
('a', 'a', 'a', 'a')
('b', 'b', 'b', 'b')
('c', 'c', 'c', 'c')
('d', 'd', 'd', 'd')
('e', 'e', 'e', 'e')
('f', 'f', 'f', 'f')
('g', 'g', 'g', 'g')
('h', 'h', 'h', 'h')
('i', 'i', 'i', 'i')
('j', 'j', 'j', 'j')
但它输出
('a', 'b', 'c', 'd')
('e', 'f', 'g', 'h')
('i', 'j', None, None)
反正这也是我想要的我只是感到困惑,因为据我所知,zip
和zip_longest
对每个项元素进行了配对。如果args
应该有相同的迭代器对象引用四次,并且有相同的第一个,第二个等元素,那么为什么这会连续输出原始列表?
1条答案
按热度按时间camsedfj1#
看看发生了什么:
你可以这样做:
或
@InSync建议