我试图将包含两个项目的单个控制列表匹配到多个目标列表,每个目标列表也包含两个值。我已经在下面的代码中实现了这一点,但是我无法弄清楚如何使用每个列表比较的布尔结果返回多个列表。
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]
谢谢
答案 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
初始化地存储在列表中,它会变得不那么难看。
(上面的解决方案符合我对你想要实现的目标的理解,只有我的思维阅读能力允许它。)