Python 通过指定行的长度创建二维锯齿列表
我有一个整数列表Python 通过指定行的长度创建二维锯齿列表,python,Python,我有一个整数列表x,我想创建一个由零组成的二维锯齿列表y,这样y的行I的长度由x的元素I确定 例如: x = [1, 3, 4] 然后: 我怎样才能做到这一点?试试这一行: x = [1, 3, 4] y = [[0]*s for s in x] 现在y将包含预期值: y => [[0], [0, 0, 0], [0, 0, 0, 0]] 您可以使用列表理解,但您希望,例如: 一种方法是如下 >>> x = [1, 3, 4] >>> [[0 fo
x
,我想创建一个由零组成的二维锯齿列表y
,这样y
的行I
的长度由x
的元素I
确定
例如:
x = [1, 3, 4]
然后:
我怎样才能做到这一点?试试这一行:
x = [1, 3, 4]
y = [[0]*s for s in x]
现在y
将包含预期值:
y
=> [[0], [0, 0, 0], [0, 0, 0, 0]]
您可以使用列表理解,但您希望,例如: 一种方法是如下
>>> x = [1, 3, 4]
>>> [[0 for _ in range(i)] for i in x]
[[0], [0, 0, 0], [0, 0, 0, 0]]
只有当我们重用相同的子列表(例如:
[[0,0]]]*2
)时,使用*
运算符才是一个问题,如果我们为每一行创建不同的子列表(如我的答案所示),您描述的问题就不会发生
[0] * 5 # will produce 'undesired' behavior (see the above link)
>>> x = [1, 3, 4]
>>> [[0 for _ in range(i)] for i in x]
[[0], [0, 0, 0], [0, 0, 0, 0]]