如何将代码转换为列表理解

时间:2019-08-08 16:13:00

标签: python list-comprehension

以下是有效代码:

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

1 个答案:

答案 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]