[英]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.