通过指定行长度来创建2D锯齿状列表

时间:2014-08-14 16:14:24

标签: python

我有一个整数列表x,我想创建一个零的锯齿状列表y,这样i的行y的长度是由i的元素x确定。

例如:

x = [1, 3, 4]

然后:

y = [[0], [0, 0, 0,], [0, 0, 0, 0]]

我该怎么做?

2 个答案:

答案 0 :(得分:2)

试试这个单行:

x = [1, 3, 4]
y = [[0]*s for s in x]

现在y将包含预期值:

y
=> [[0], [0, 0, 0], [0, 0, 0, 0]]

答案 1 :(得分:0)

您可以使用列表推导,但是您想要avoid making the sublists using the multiplication operator,例如:

[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]]