使用多个循环和if语句在python中列出理解

时间:2016-12-07 15:59:19

标签: python list list-comprehension

我必须打印有序对的列表,其中x + y + z!= n。代码似乎无法正常工作

def main():
    x = int(input())
    y = int(input())
    z = int(input())
    n = int(input())
    result = [[i,j,k] for i in range(0,x+1) for j in range(0,y+1) for k in range(0,z+1) if (x+y+z) != n]
    print(result)

输入:

1
1
1
2

输出:

[[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]]

我不应该得到有序对[0,1,1],[1,0,1],[1,1,0]。

请纠正我。

提前致谢!

2 个答案:

答案 0 :(得分:3)

您将列表推导变量与用户的输入混合在一起。

替换:

if (x+y+z) != n

if (i+j+k) != n

答案 1 :(得分:0)

一个衬垫很棒,但是它们会让我感到困惑,所以我会扩展你的代码

    result = []
    for i in range(0, x+1):
        for j in range(0, y+1):
            for k in range(0, z+1):
                if (i+k+j)!=n:
                    result.append([i,k,j])

它对我有用