从元组更改为列表,反之亦然

pia*_*873 2 python list

我怎么能改变[('a', 1), ('c', 3), ('b', 2)],['a',1,'c',3,'b',2]反之亦然?谢谢

Dan*_*olo 10

从第一方向前进[('a', 1), ('c', 3), ('b', 2)]['a',1,'c',3,'b',2]扁平化的列表.从那里接受接受的答案并修改此示例:

>>> L = [('a', 1), ('c', 3), ('b', 2)]
>>> list(itertools.chain(*L))
['a', 1, 'c', 3, 'b', 2]
Run Code Online (Sandbox Code Playgroud)

这使用itertools.chain了一个很好的工具,itertools从而很好地平坦化序列.

相反的方式是拉链:

>>> L = ['a', 1, 'c', 3, 'b', 2]
>>> zip(L[0::2], L[1::2])
[('a', 1), ('c', 3), ('b', 2)]
Run Code Online (Sandbox Code Playgroud)

zip采用两个列表,并将列表1的第一个元素与列表2中元组的第一个元素组合在一起,依此类推列表的长度.所以在这一个中,我们基本上将偶数索引元素作为我们的第一个list(L[0::2]),然后将奇数索引元素作为我们的第二个(L[1::2])

  • 不要忘记`itertools.izip_longest(*[iter(L)]*2)`.;-) (2认同)