如何比较列表之间的每个值。它应该完全匹配。
list1 = ['same1', 'same2']
list2 = ['notsame1', 'notsame2']
list3 = ['same1', 'same2']
def comp(list1, list2, list3):
if set(list1) & set(list2):
print "Train A is active and instances are %s." % list2
elif set(list1) & set(list3):
print "Train B is active and instances are %s." % list3
else :
print "No Trains are active"
comp(list1, list2, list3)
尽管我在list3 = ['not_same1', 'same2']
看起来它只是检查列表中的一个值,如何比较所有元素,即使元素没有按顺序排列。
看起来**set**
已被弃用,欢迎使用其他任何方式。
答案 0 :(得分:1)
使用等式检查set(list1)==set(list2)
代替交叉set(list1) & set(list2)
。
答案 1 :(得分:1)
只需使用==
即可获得所需内容。它直接比较两个序列的值:
list1 = ['same1', 'same2']
list2 = ['notsame1', 'notsame2']
list3 = ['same1', 'same2']
def comp(list1, list2, list3):
if list1 == list2:
print( "Train A is active and instances are %s." % list2)
elif list1 == list3:
print( "Train B is active and instances are %s." % list3)
else :
print( "No Trains are active")
comp(list1, list2, list3)
答案 2 :(得分:1)
如何比较所有元素,即使元素没有按顺序排列。
这是一种在不使用设置的情况下比较3个数组的方法。
def compareArrays(list1, list2):
for item in list1:
if not item in list2:
return False # The array's don't match
return True # The array's match
def comp(list1, list2, list3):
if compareArrays(list1, list2):
print( "Train A is active and instances are %s." % list2)
elif compareArrays(list1, list3):
print( "Train B is active and instances are %s." % list3)
else:
print( "No Trains are active")
list1 = ['same1', 'same2']
list2 = ['notsame1', 'notsame2']
list3 = ['same1', 'same2']
comp(list1, list2, list3)
答案 3 :(得分:1)
您可以直接将集合与==
进行比较。由于集合删除了多个值,因此在尝试转换为它们之前,先检查两个列表是否具有相同的长度:
from __future__ import print_function
def comp(list1, list2, list3):
if len(list1) == len(list2) and set(list1) == set(list2):
print("Train A is active and instances are %s." % list2)
elif len(list1) == len(list3) and set(list1) == set(list3):
print("Train B is active and instances are %s." % list3)
else :
print("No Trains are active")
运行一些测试:
def test(list1, list2, list3):
print('#' * 10)
print('list1', list1)
print('list2', list2)
print('list3', list3)
comp(list1, list2, list3)
list1 = ['same1', 'same2']
list2 = ['notsame1', 'notsame2']
list3 = ['same1', 'same2']
test(list1, list2, list3)
list2 = ['same1', 'same2']
test(list1, list2, list3)
list2 = ['same1', 'same2', 'same2']
test(list1, list2, list3)
list2 = ['notsame1', 'notsame2']
list3 = ['same1', 'same2', 'same2']
test(list1, list2, list3)
输出:
##########
list1 ['same1', 'same2']
list2 ['notsame1', 'notsame2']
list3 ['same1', 'same2']
Train B is active and instances are ['same1', 'same2'].
##########
list1 ['same1', 'same2']
list2 ['same1', 'same2']
list3 ['same1', 'same2']
Train A is active and instances are ['same1', 'same2'].
##########
list1 ['same1', 'same2']
list2 ['same1', 'same2', 'same2']
list3 ['same1', 'same2']
Train B is active and instances are ['same1', 'same2'].
##########
list1 ['same1', 'same2']
list2 ['notsame1', 'notsame2']
list3 ['same1', 'same2', 'same2']
No Trains are active