检查列表中元组的所有值
Check all values of tuple in list
我在 Python 中设置了一个这样的列表(通过 Ren'Py):
[('nc',nc,'test test test'),('nr',nr,'test test test')]
'nr' 自然是一个字符串,nr(不带引号)是一个对象。最后一位是字符串。
现在,我希望能够在 if 中比较整个元组。
像这样:
if (char,charobj,message) not in list:
#do stuff
这是行不通的 - 不管怎样,它仍然会做一些事情。那么...如何将所有项目与列表中的每个元组进行比较?
嗯……
我猜你 charobj
可能是你自己实现的 class。
要允许 Python 执行 有意义的 相等比较而不仅仅是 盲目 比较,您必须重载默认方法,例如:
__eq__(self, other)
__gt__(self, other)
__lt__(self, other)
- ...
那里有更多信息:https://docs.python.org/3/reference/datamodel.html#special-method-names
无论如何,我进行了一些测试,它适用于文字和 built-in 类型。
我在 Windows 10 (x64) 上使用 Python 2.7。
nr = 4
nc = 2
list = [('nc',nc,'test test test'),('nr',nr,'test test test')]
if ('nc', 2, 'test test test') in list:
print('OK')
else:
print('KO')
实际打印 OK
.
我试过 not in
,它打印 KO
。
我也尝试用变量替换文字,它似乎也有效。
nr = 4
nc = 2
list = [('nc',nc,'test test test'),('nr',nr,'test test test')]
_nc = 'nc'
_message = 'test test test'
if (_nc, nc, _message) in list:
print('OK')
else:
print('KO')
还打印 OK
.
希望对您有所帮助。
我在 Python 中设置了一个这样的列表(通过 Ren'Py):
[('nc',nc,'test test test'),('nr',nr,'test test test')]
'nr' 自然是一个字符串,nr(不带引号)是一个对象。最后一位是字符串。
现在,我希望能够在 if 中比较整个元组。
像这样:
if (char,charobj,message) not in list:
#do stuff
这是行不通的 - 不管怎样,它仍然会做一些事情。那么...如何将所有项目与列表中的每个元组进行比较?
嗯……
我猜你 charobj
可能是你自己实现的 class。
要允许 Python 执行 有意义的 相等比较而不仅仅是 盲目 比较,您必须重载默认方法,例如:
__eq__(self, other)
__gt__(self, other)
__lt__(self, other)
- ...
那里有更多信息:https://docs.python.org/3/reference/datamodel.html#special-method-names
无论如何,我进行了一些测试,它适用于文字和 built-in 类型。 我在 Windows 10 (x64) 上使用 Python 2.7。
nr = 4
nc = 2
list = [('nc',nc,'test test test'),('nr',nr,'test test test')]
if ('nc', 2, 'test test test') in list:
print('OK')
else:
print('KO')
实际打印 OK
.
我试过 not in
,它打印 KO
。
我也尝试用变量替换文字,它似乎也有效。
nr = 4
nc = 2
list = [('nc',nc,'test test test'),('nr',nr,'test test test')]
_nc = 'nc'
_message = 'test test test'
if (_nc, nc, _message) in list:
print('OK')
else:
print('KO')
还打印 OK
.
希望对您有所帮助。