![](/img/trans.png)
[英]How Can I Check if Every Item in a List Appears Within Any Items in Another List?
[英]Check if any two items are present within another list
如何检查列表中的任何两项是否在另一个列表中?
我正在尝试找出如何测试某些单词组合是否出现在列表中的方法。 例如:
l1 = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
if all(['A', 'C', 'D']) or all(['A', 'D']) or all(['C', 'D'])in l1:
print('Violation')
这个想法是要确定A
和C
与D
一起存在。
我已经尝试了上面的代码,但由于总是假设它仅测试是否有任何检查清单的单个项目在L1
范围内,所以我总是遇到违规情况。
如果要检查这些子集,则必须分别检查每个子集。 您对all
内容的使用也不正确。 all
检查传递给它的序列中的所有元素是否都是“ Truthy” 。
all(['A', 'B', 'C'])
# True
因此,您的if
实际上减少到:
if True or True or True in l1:
该表达式会短路到if True
,因此始终会执行。
为此,我将对df
列上的每个子集执行set.issuperset()
检查。
subsets = [{'A', 'C', 'D'}, {'A', 'D'}, {'C', 'D'}]
columns = set(df)
if any(columns.issuperset(s) for s in subsets):
print('Violation')
我不确定我是否完全理解您的问题...
该代码检查l1中是否存在['A','D'] and
['C','D']。
if all(i in l1 for i in ['A', 'D']) and all(i in l1 for i in ['C', 'D']):
print('Violation')
如果您想要or
条件,
if all(i in l1 for i in ['A', 'D']) or all(i in l1 for i in ['C', 'D']):
print('Violation')
当您说全部(['A','C','D'])时,每个字母都会转换为True布尔值,从而使all()语句为true,并且始终会打印“ Violation” 。 这是一种解决方法:
l1 = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
pattern1 = ['A', 'C', 'D']
pattern2 = ['A', 'D']
pattern3 = ['C', 'D']
for pat in [pattern1, pattern2, pattern3]:
if all(letter in l1 for letter in pat):
print("Violation")
break
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.