繁体   English   中英

如果列表中的if语句具有多个列表

[英]If statement in list comprehension with multiple lists

我有两个长度相等的列表,并且如果它们之间的差小于5,则想从两个列表中删除它们:

X_List = [0, 95, 99, 107, 589]
Y_List = [94, 98, 104, 587, 1046]

我想从每个使用列表理解中删除第二个和第三个值:

X_list = [x if y-x <= 5 for (x,y) in zip(X_list, Y_List)]
Y_list = [y if y-x <= 5 for (x,y) in zip(X_list, Y_List)]

但是,每行的“ for”部分存在错误(语法无效)。 这是由于第一个y&我将如何防止这种情况?

您将if放在错误的位置-应该放在最后; 以下是获取不带值的列表的方法:

x_mod = [x for x, y in zip(X_List, Y_List) if abs(x-y)>5]
Y_List = [y for x, y in zip(X_List, Y_List) if abs(x-y)>5]

X_List = x_mod

第一个列表没有直接修改,而是写入了temp var。 如果像原始源代码中那样,那么第二个理解将必须与已经修改的X_List一起使用,并且不会产生期望的结果。

我还使用了两个值的绝对差b / n,因为您已经说过两者之间的差应大于5,而不是Y_List的成员应大于5。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM