【问题标题】:Initialize an empty list of the shape/structure of a given list without numpy在没有 numpy 的情况下初始化给定列表的形状/结构的空列表
【发布时间】:2017-01-17 23:03:45
【问题描述】:

给定一个列表A,其中n 行,每行都有m 列。 是否有一个行来创建具有相同结构的空列表Bn 行,每个行都有m 组件)?

可以创建/重塑 Numpy 列表。 python内置的list类型是否支持这样的说法?

【问题讨论】:

  • [[None for _ in range(m)] for _ in range(n)]
  • 可以插入或删除单个元素,但没有等效的reshape功能。
  • @PatrickHaugh 'm' 和 'n' 可以用一些通用的东西来代替,它派生出列表的形状A
  • @vvy len(A[0])len(A),分别。

标签: python list


【解决方案1】:
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

n = len(A)
m = len(A[0])


B = [[0 for x in range(m)] for y in range(n)] 

编辑:

使其成为单线:

B = [[0 for x in range(len(A[0])] for y in range(len(A))]

编辑:

正如 Jblasco 在 cmets 中所建议的,这是一种更好的方法:

 B = [[0 for i in line] for line in A]

(该解决方案归功于 Jblasco!)

【讨论】:

  • 谢谢。它不完全是单行的,但解释了基本思想。 @PatrickHaugh 的答案将是您答案的精炼版本。
  • 为了更简单,我建议:B = [[0 for ii in line] for line in A]
  • @Jblasco 啊,太棒了!好东西! :)
  • 你想出了答案,我只是稍微清理了一下! :p
【解决方案2】:

你可以使用:B=[[None]*m]*n

它会创建一个包含 n 行 m 列的 None 列表。

【讨论】:

  • 您是否尝试过在执行此操作后打印以下内容? id(B[0]) == id(B[1]) 或更改其中一行的第一个元素?
猜你喜欢
  • 1970-01-01
  • 2015-11-27
  • 1970-01-01
  • 2015-05-31
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多