检查列表中元组的所有值

时间:2018-03-12 16:47:06

标签: python-2.7 renpy

我在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

这不起作用 - 无论如何它仍然有用。那么......如何将所有项目与列表中的每个元组进行比较?

1 个答案:

答案 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

希望有所帮助。