Python 如何检查元组列表是否包含必需的元素
如何检查元组列表是否只包含包含元素的元组 (‘姓名’、‘姓氏’、‘地址’、‘汽车’、‘颜色’)和(‘姓名’、‘姓氏’、‘地址’) 元组不能与单个“car”和“color”一起存在Python 如何检查元组列表是否包含必需的元素,python,list,tuples,Python,List,Tuples,如何检查元组列表是否只包含包含元素的元组 (‘姓名’、‘姓氏’、‘地址’、‘汽车’、‘颜色’)和(‘姓名’、‘姓氏’、‘地址’) 元组不能与单个“car”和“color”一起存在 a =[ ('name', 'surname', 'adres', 'car', 'colour'), ('name', 'surname', 'adres'), ('name', 'surname', 'adres', 'colour'), ('name', 'surname', 'a
a =[
('name', 'surname', 'adres', 'car', 'colour'),
('name', 'surname', 'adres'),
('name', 'surname', 'adres', 'colour'),
('name', 'surname', 'adres', 'car')
]
for elem in a:
if 'car' not in elem and 'colour' not in elem:
print(elem)
下面的元组可以:
('name', 'surname', 'adres', 'car', 'colour')
('name', 'surname', 'adres')
你要像处理逻辑问题一样解决这个问题。您希望(a)在元组中找到两个值,或者(b)在元组中找不到任何值。您几乎可以将该表达式编码为普通语言,如下所示:
def is_valid(t):
return ('car' in t and 'colour' in t) or ('car' not in t and 'colour' not in t)
你要像处理逻辑问题一样解决这个问题。您希望(a)在元组中找到两个值,或者(b)在元组中找不到任何值。您几乎可以将该表达式编码为普通语言,如下所示:
def is_valid(t):
return ('car' in t and 'colour' in t) or ('car' not in t and 'colour' not in t)
在这种情况下,如果您有一个如此小的有效选项列表,您可以采用非常简单的方法,只需检查元组是否是其中之一
valid = {
('name', 'surname', 'adres', 'car', 'colour'),
('name', 'surname', 'adres')}
for elem in a:
if elem in valid:
print(elem)
如果您想通过算法实现,那么首先需要确认元组只包含允许的元素,并且不包含或同时包含('car','color')
,即XNOR
allowed = {'name', 'surname', 'adres', 'car', 'colour'}
for elem in a:
if not all(x in allowed for x in elem):
continue
if ('car' in elem) ^ ('colour' in elem):
continue
print(elem)
(我将其拆分以将行数保持在80个字符以下)在这种情况下,如果您有一个如此小的有效选项列表,您可以采用非常简单的方法,只需检查元组是否是其中之一
valid = {
('name', 'surname', 'adres', 'car', 'colour'),
('name', 'surname', 'adres')}
for elem in a:
if elem in valid:
print(elem)
如果您想通过算法实现,那么首先需要确认元组只包含允许的元素,并且不包含或同时包含('car','color')
,即XNOR
allowed = {'name', 'surname', 'adres', 'car', 'colour'}
for elem in a:
if not all(x in allowed for x in elem):
continue
if ('car' in elem) ^ ('colour' in elem):
continue
print(elem)
(我将其拆分以将行数保持在80个字符以下)两个或两个都不是XNOR:不返回('car'在t中)^('color'在t中)
两个或两个都不是XNOR:不返回('car'在t中)^('color'在t中)