2016-05-15 25 views
2

是否有更有效,更简单的方法来创建长度为'n'的列表元组?初始化列表的n长度元组

所以在Python,如果我想创建一个列表的列表,我可以这样做:

[[] for _ in range(list_length)] 

并创建一个类似性质的列表的元组,我可以在技术上写:

tuple([[] for _ in range(list_length)]) 

但是,这是计算效率低下,是否可以写得更好?

Warning:对于任何人认为在元组(不可变)中放置可变对象(如列表)的好主意;它实际上似乎通常更快(计算)只使用一个列表(在我的情况下列表的列表)。

+1

列表的元组是一个不寻常的事情,除了像函数星型参数这样的短期狭窄范围的用途之外,元组的主要优点在于它是不可变的,可用于集合,作为字典键等。但是,如果元组的_contents_是可变的,则元组本身不能安全地用于任何角色。 –

+0

哇,实际上(根据我非常草率的基准测试),与使用列表列表做同样的事情相比,创建,访问和附加到元组列表的时间要长得多。 – Patrick

回答

2

使用genex而不是LC。

tuple([] for _ in range(list_length)) 
+0

谢谢!出于某种原因,我没有想到。 – Patrick