在Python中创建各种元组的最快方法

时间:2013-05-27 18:00:13

标签: python python-2.7

正如问题所示,我正在尝试创建一系列元组:
[(1,1),(2,2),(3,3),(4,4),(5,5)...]
我想知道最短的方法是什么?

4 个答案:

答案 0 :(得分:3)

使用list comprehension

>> [(i,i) for i  in xrange(1,6)]
[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)]

答案 1 :(得分: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)。

答案 2 :(得分:0)

只需使用list comprehension

number_of_tuples = 6
[(i, i) for i in range(number_of_tuples)]

答案 3 :(得分:0)

如果通过范围表示必须列表,请在此处查看其他答案。

否则,如果你只想迭代这个或类似的东西,考虑将理解用作生成器,而不用从中列出一个列表:

g = ((i, i) for i in xrange(1, 6))

然后再说:

for a, b in g:
  print a, b

创建该生成器肯定比创建列表更快。