我有两个长度相等的列表,如果它们的差异小于 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
第一个列表不是直接修改的,而是写入临时变量。如果是这样,就像在原始源中一样,那么第二个理解将必须与已修改的 X_List 一起使用,并且不会产生所需的结果。
我还使用了两个值的绝对差,正如您所说,两个值之间的差值应该大于 5,而不是 Y_List 的成员应该大于 5。
关于python - 具有多个列表的列表理解中的 If 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42215836/