我在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
这不起作用 - 无论如何它仍然有用。那么......如何将所有项目与列表中的每个元组进行比较?
答案 0 :(得分:0)
嗯...
我猜您charobj
可能是您自己实施的课程。
为了允许Python执行有意义的相等比较,而不仅仅是盲比较,你必须重载默认方法,如:
__eq__(self, other)
__gt__(self, other)
__lt__(self, other)
更多信息:https://docs.python.org/3/reference/datamodel.html#special-method-names
无论如何,我做了一些测试,它适用于文字和内置类型。 我在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
。
希望有所帮助。