将列表中的两个项目与具有两个值的多个列表进行比较并返回布尔值

时间:2016-11-04 01:10:28

标签: python python-3.5

我试图将包含两个项目的单个控制列表匹配到多个目标列表,每个目标列表也包含两个值。我已经在下面的代码中实现了这一点,但是我无法弄清楚如何使用每个列表比较的布尔结果返回多个列表。

value = [2.55, 5.55]

a = [2.55, 3.55]
b = [4.55, 5.55]
c = [6.55, 7.68]

check = [i for i in value if i in a + b + c]
print (check)

我希望结果如下:(这是所需的输出)..

#a = [true, false]
#b = [false, true]
#c = [false, false]

谢谢

2 个答案:

答案 0 :(得分:2)

不知道这是否是您想要的,如果您的逻辑中存在错误,但这可能会起作用:

value = [2.55, 5.55]

a = [2.55, 3.55]
b = [4.55, 5.55]
c = [6.55, 7.68]

# comprehension
result = [[val in lst for val in value] for lst in [a, b, c]]
# without comprehension
result = []
for lst in [a, b, c]:
    row = []
    for val in value:
        row.append(val in lst)
    result.append(row)

# if u want to asign the lists to the a, b, c, u can do instead
a, b, c = [[val in lst for val in value] for lst in [a, b, c]]
print(a, b, c)
[True, False] [False, True] [False, False]

答案 1 :(得分:1)

A,B,C = [[abc_value == val_value for abc_value, val_value in zip(abc, value)] for abc in [a,b,c]]

当然,通过更好的命名约定并将a, b, c初始化地存储在列表中,它会变得不那么难看。

zip()

(上面的解决方案符合我对你想要实现的目标的理解,只有我的思维阅读能力允许它。)