【问题标题】:Best way to initialize a list of lists初始化列表列表的最佳方法
【发布时间】:2017-06-25 20:18:46
【问题描述】:

通过以下方式初始化列表列表有什么区别

  1. [[0 for i in xrange(n)] for j in xrange(m)]

  1. [[0]*n for j in xrange(m)]

从时间性能的角度来看,第一种方式比第二种方式快 4 倍,我想知道第一种方式是否有任何计算/内存使用或分配缺陷。

【问题讨论】:

标签: performance python-2.7 list memory initialization


【解决方案1】:

列表推导式提供了一种创建列表的简洁方式。常见的 应用程序将创建新列表,其中每个元素都是 应用于另一个序列的每个成员的一些操作或 可迭代,或创建满足 a 的那些元素的子序列 一定的条件。

第一种方法比第二种方法慢,因为在每次循环迭代中都会执行 no-op

附:如果你想用常数值(k)初始化一个列表,那么理想和最快的方法是使用 numpy np.ones((m, n))*k

【讨论】:

  • 你应该更好地解释你的陈述。
  • @Mandar l = [[0]*n]*m 根本不是办法。看看l[0][0]=1 之后该列表会发生什么。
猜你喜欢
  • 1970-01-01
  • 2013-12-30
  • 1970-01-01
  • 2018-03-09
  • 1970-01-01
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多