如何编写给定代码的列表推导?

Ash*_*pai 2 python list-comprehension

我对python很新.

l = []    
for i in range(x+1):
    for j in range(y+1):
        for k in range(z+1):
            if i+k+j!=n:
                l.append([i,j,k])
Run Code Online (Sandbox Code Playgroud)

我尝试过:

l = [[[i for i in range(x+1)] for j in range(y+1)] for k in range(z+1) if i+j+k != n]
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

ACh*_*ion 8

@ e4c5提供了文字替换,但您可以使用它itertools来简化理解.特别itertools.product()是会给你相当于嵌套for循环:

import itertools as it
[a for a in it.product(range(x+1), range(y+1), range(z+1)) if sum(a) != n]
Run Code Online (Sandbox Code Playgroud)


e4c*_*4c5 5

嵌套列表推导可能有点棘手.您需要将三元组添加到列表中.这意味着理解的第一部分应该是(i,j,k)

[ (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]
Run Code Online (Sandbox Code Playgroud)

然后你需要将list作为条件,以i + j + k不等于n为条件.结果是if条件.不应该有任何其他[]介于两者之间.