我的答案没有针对其中一个示例运行

问题描述 投票:0回答:2

我使用列表理解编写了这个 python3 代码,我的代码对于其中一个示例运行良好,但在答案中显示了一个额外的列表,如所附图片所示。 它在答案中显示了不应该显示的 [1,1,0]。

我更改了范围,甚至将 == 符号更改为 != 并将删除更改为追加,但随后它显示了一些其他错误。

问题:

打印一个由总和不等于 n 的元素组成的数组 输入格式 四个整数 x、y、z 和 n,每个整数占一行。 约束条件 按字典顺序递增打印列表。

代码:

if __name__ == '__main__':
a = int(input())
b = int(input())
c = int(input())
n = int(input())
list1=[[x,y,z] for x in range(a+1) for y in range(b+1) for z in range(c+1)]
for i in list1:
    if sum(i)== n:
        list1.remove(i)
print(list1)

样品:

输入: 1 1 1 2

我的输出: [[0,0,0],[0,1,0],[1,0,0]]

预期输出: [[0, 0, 0], [0, 0, 1], [0, 1, 0], [1, 0, 0], [1, 1, 1]]

python list list-comprehension
2个回答
0
投票

这是您要找的吗?

a = int(input())
b = int(input())
c = int(input())
n = int(input())

l = [[x,y,z] for x in range(a+1) for y in range(b+1) for z in range(c+1) if (x+y+z) != n]
print(l)

0
投票

您可以有一个单独的空列表,然后如果计算出的总和与目标值不同,则将其追加到该列表中。当您从列表中删除时,它不会遍历其中的每个元素并跳过元素 [1,1,0]。

l2 = [] 对于列表 1 中的 l: 如果 sum(l) != n: l2.追加(l)

© www.soinside.com 2019 - 2024. All rights reserved.