我缺少一些非常简单的东西。当我使用zip函数迭代5个元素
list = [1,2,3,4,5,6,7]
for i2,i1,i,i11,i22 in zip([None] + list[:-2], [None] + list[:-1], list, list[1:] + [None], list[2:] + [None]):
print i2,i1,i,i11,i22
我得到结果:
None None 1 2 3
1 1 2 3 4
2 2 3 4 5
3 3 4 5 6
4 4 5 6 7
5 5 6 7 None
所以我不确定为什么元素[:-2]实际上给了我元素[:-1]。以及为什么它在最后一行之前停止,我可以想象迭代以“ 5 6 7 None None”结束。我想这些是一些基本知识,但是我坚持了下来。任何提示都非常感谢!
答案 0 :(得分:1)
当您指定list[:-2]
或list[2:]
时,您必须再添加2个元素以使新列表的长度与list相同
顺便说一下,变量名不要与list
相同。将其重命名为lst
lst = [1,2,3,4,5,6,7]
for i2,i1,i,i11,i22 in zip([None, None] + lst[:-2], [None] + lst[:-1], lst, lst[1:] + [None], lst[2:] + [None, None]):
print i2,i1,i,i11,i22
输出:
None None 1 2 3
None 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 None
5 6 7 None None
答案 1 :(得分:1)
您的列表长度不同
list = [1,2,3,4,5,6,7]
[print (i2,i1,i,i11,i22) for i2,i1,i,i11,i22
in zip([None,None]+ list[:-2],
[None] + list[:-1],
list,
list[1:] + [None],
list[2:] + [None,None])]