元组?
在Python 2 ň
>>> zip(*2*[iter(x)])
[(0, 1), (2, 3), (4, 5), (6, 7)]
在Python 3 ň
zip()
表现略有不同...
>> zip(*2*[iter(x)])
<zip object at 0x285c582c>
>>> list(zip(*2*[iter(x)])])
[(0, 1), (2, 3), (4, 5), (6, 7)]
名单?
执行是在Python 2和3一样的...
>>> [[i,j] for i,j in zip(*2*[iter(x)])]
[[0, 1], [2, 3], [4, 5], [6, 7]]
,或者:
>>> [list(t) for t in zip(*2*[iter(x)])]
[[0, 1], [2, 3], [4, 5], [6, 7]]
,如果你想分成list
S的3后者是更有益或多种元素,而不拼写出来,如:
>>> [list(t) for t in zip(*4*[iter(x)])]
[[0, 1, 2, 3], [4, 5, 6, 7]]
如果zip(*2*[iter(x)])
对你来说看起来有点奇怪(当我第一次看到它时,它确实对我有用!),看看How does zip(*[iter(s)]*n)
work in Python?。
另请参阅this pairwise implementation,我认为它很整洁。
你说二元组,但你的例子是“双列表” – 2011-05-15 10:14:09
重复(很多次):http://stackoverflow.com/questions/434287/what-is-the-most-pythonic-way-重复列表块 – tokland 2011-05-15 10:15:14
当然,糟糕的是混淆。尽管这个问题并不重要;) – c089 2011-05-15 10:28:43