如何创建一个列表列表,其中每个子列表“递增”如下:[1, 0, 0], [1, 1, 0], [1, 1, 1]

Tim*_*lan 11 python list

这有效但很笨拙,而且不是很“Pythonic”。我还希望能够运行 'numValues' 的不同值,例如 4 到 40 ...

innerList = []
outerList = []
numValues = 12
loopIter = 0

for i in range(numValues):
    innerList.append(0)

for i in range(numValues):
    copyInnerList = innerList.copy()
    outerList.append(copyInnerList)

for i in range(len(innerList)):
    for j in range(loopIter + 1):
        outerList[i][j] = 1
    loopIter += 1

print(outerList)
Run Code Online (Sandbox Code Playgroud)

Bło*_*tek 12

numValues = 12
result = [ [1] * i + [0] * (numValues - i) for i in range(1, numValues+1) ]
Run Code Online (Sandbox Code Playgroud)


Nic*_*ick 6

您可以将其作为嵌套列表理解来执行,其中有两个迭代器,range(numValues)并且仅1在第二个迭代器是<=第一个时才设置 a :

numValues = 4

outerList = [[1 if j <= i else 0 for j in range(numValues)] for i in range(numValues)]
print(outerList)
Run Code Online (Sandbox Code Playgroud)

输出:

[[1, 0, 0, 0], [1, 1, 0, 0], [1, 1, 1, 0], [1, 1, 1, 1]]
Run Code Online (Sandbox Code Playgroud)