正如问题所暗示的那样,我正在尝试创建一系列元组:
[(1,1),(2,2),(3,3),(4,4),(5,5)...]
我想知道这样做的最短方法是什么?
问问题
1317 次
4 回答
3
from itertools import repeat
zip(*repeat(xrange(1, n_tuples), 2))
优点:
- 快速:仅需要约 56% 的时间,需要具有列表推导的表达式。IPython 报告:10000 个循环,最好的 3:每个循环92.8 us,带有
n_tuples = 1000
(列表理解: 10000 个循环,最好的 3:每个循环165 us)。(我强调这一点,因为它是专门要求“最快的方式”)。 - 您可以轻松更改元组中相同元素的数量(通过将 替换
2
为所需的数字)。 - 它更短(至少没有
import
)。
于 2013-05-27T18:39:43.193 回答
3
Use a list comprehension:
>> [(i,i) for i in xrange(1,6)]
[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)]
于 2013-05-27T18:01:31.057 回答
0
Just use a list comprehension.
number_of_tuples = 6
[(i, i) for i in range(number_of_tuples)]
于 2013-05-27T18:02:00.463 回答
0
如果按范围表示必然是一个列表,请在此处查看其他答案。
否则,如果您只想遍历此或类似内容,请考虑将推导用作生成器,而无需从中列出:
g = ((i, i) for i in xrange(1, 6))
然后:
for a, b in g:
print a, b
创建该生成器肯定比创建列表要快。
于 2013-05-27T19:01:51.423 回答