以下是有效代码:
if __name__ == '__main__':
x = int(input("Enter x: "))
y = int(input("Enter y: "))
z = int(input("Enter z: "))
n = int(input("Enter n: "))
ar=[]
p=0
for i in range ( x + 1 ) :
for j in range( y + 1):
for k in range( z + 1):
if i+j+k != n:
ar.append([])
ar[p] = [i, j, k]
p+=1
print(ar[-1], end=" ")
输入:
x=1
y=1
z=1
n=2
输出:
[0, 0, 0] [0, 0, 1] [0, 1, 0] [1, 0, 0] [1, 1, 1]
我的要求是将其转换为“列表综合”方法,如下所示:
[print ([x, y, z]) for i in range(x+1) for j in range(y+1) for k in range(z+1) if ( (i + j + k ) != n )]
答案 0 :(得分:1)
对于您要执行的操作,这部分太复杂了:
ar.append([])
ar[p] = [i, j, k]
p+=1
正确的方法是:
ar.append([i, j, k])
对于理解...这很容易,请将其转变为理解:
result = []
for XXXX:
for YYYY:
if ZZZZ:
for QQQQ:
result.append(RRRR)
只需:
result = [RRRR for XXXX for YYYY if ZZZZ for QQQQ]
所以,就您而言:
ar = [[i, j, k]
for i in range ( x + 1 )
for j in range( y + 1)
for k in range( z + 1)
if i+j+k != n]