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

时间:2017-03-11 01:47:36

标签: 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])

我试过了:

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]

但它不起作用。

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分: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]

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