【问题标题】:Initialising an n-length tuple of lists初始化一个 n 长度的列表元组
【发布时间】:2016-05-15 04:49:23
【问题描述】:

有没有更高效、更简单的方法来创建长度为“n”的列表元组?

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

[[] for _ in range(list_length)]

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

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

但是这样计算效率低吗,能不能写得更好一点?

警告: 对于那些认为将可变对象(例如列表)放入元组(不可变)中的人来说是个好主意;实际上,仅使用一个列表(在我的例子中是列表的列表)实际上似乎通常更快(计算上)。

【问题讨论】:

  • 列表元组是一种不寻常的东西,除了一些短期的、​​范围狭窄的用途(如函数星形参数)之外。元组的主要优点是它是不可变的,可用于集合、字典键等。但是如果元组的 contents 是可变的,则元组本身不能安全地用于任何这些角色。
  • 哇,事实上(根据我非常草率的基准测试),与使用列表执行相同操作相比,创建、访问和附加到元组中的列表需要更长的时间.

标签: python list tuples


【解决方案1】:

使用genex而不是LC。

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

【讨论】:

  • 谢谢!出于某种我没有想到的原因。
  • (genex代表生成器表达式,LC代表列表理解)
【解决方案2】:

试试这个:

tuple = (elements,) * list_length

【讨论】:

  • 将变量命名为与内置数据类型或函数相同的名称是不好的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 2019-12-20
  • 2021-07-04
相关资源
最近更新 更多