以下代码尝试扫描所有要素元素的mag元素。如果可以在mag中找到所有注释的UNIQUE元素,那么它应该打印YES ..否则它应该打印NO。 对元素的检查应该区分大小写。
mag =['two', 'times', 'three', 'is', 'not', 'four', 'two']
note =['two', 'times', 'two', 'is', 'four']
r = ""
x=[]
for i in mag:
for j in note:
if j in i and j not in x:
x.append(j)
if len(x)==len(note):
r = "YES, all note elements can be found in mag"
else:
r = "NO, all note elements cannot be found in mag"
print(r)
print (" ".join(map(str, x)))
当我运行代码时,我得到r =" NO,所有n个元素都无法在mag" ..但不应该是这种情况,因为元素的频率" 2"列表(mag)和列表(注释)中都是2
我想要实现的目标: 我想比较是否可以在mag中找到音符中的每个独特元素。例如如果mag = [" a"," b"," c"," d"]和note = [" b&# 34;," a"," c"] ..它将返回TRUE。但如果mag = [" a"," b"," c"," d"]和note = [" b& #34;," a"," a" " c"]然后它返回false,因为" a"在笔记中出现两次,但在mag中出现一次
答案 0 :(得分:0)
一种简单的临时方法,可以检查list1
中list2
的所有元素是否都在使用
def check_subset(list1, list2):
for item in list1:
if item not in list2:
return False
return True
或者作为使用列表理解的oneliner:
all([item in list2 for item in list1])
更好的方法是使用集合,例如看这里: Python - verifying if one list is a subset of the other
答案 1 :(得分:0)
使用Counter
计算每个单词出现次数的次数,然后我相信您的检查结果是note
的计数器是否小于{{{ 1}},但不幸的是,计数器并没有像我想象的那样实现mag
。你必须手工比较它们:
<=
答案 2 :(得分:0)
不是单行,因为您必须先识别较短的列表。如果您始终知道,note
的元素少于mag
,那么您可以跳过此测试。
a = [note, mag][len(mag) > len(note)] #more list elements
b = [note, mag][mag != a] #less list elements
print(all([a.count(item) >= b.count(item) for item in set(b)]))
输出
mag =['two', 'times', 'three', 'is', 'not', 'four', 'two']
note =['two', 'times', 'two', 'is', 'four']
>>>True
mag =['two', 'times', 'three', 'is', 'not', 'five']
note =['two', 'times', 'two', 'is', 'four']
>>>False