检查列表中元组的所有值

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.

希望对您有所帮助。