如何检查Python列表中是否存在元组?

时间:2012-03-11 11:29:22

标签: python list exists

我是Python新手,我正在尝试检查列表[a,b]中是否存在l=[[a,b],[c,d],[d,e]]对。我搜索了很多问题,但找不到精确的解决方案。请有人能告诉我正确和最短的方式吗?

我跑的时候:

a=[['1','2'],['1','3']]
for i in range(3):
    for j in range(3):
        if [i,j] in a:
            print a

输出是空白

如何实现这一目标呢?

5 个答案:

答案 0 :(得分:15)

以下是一个例子:

>>> [3, 4] in [[2, 1], [3, 4]]
True

如果您需要这么做,请考虑使用 set ,因为它有更快的遏制检查。

答案 1 :(得分:4)

代码不起作用,因为'1' != 1因此['1','2'] != [1,2] 如果您希望它工作,请尝试:

a=[['1','2'],['1','3']]
for i in range(3):
    for j in range(3):
        if [str(i), str(j)] in a: # Note str
            print a

(但使用in或已经提到的设置更好)

答案 2 :(得分:0)

在我的解释器(IPython 0.10,Python 2.7.2+)中,您的代码提供了正确的输出:

In [4]: a=[[1,2],[1,3]]

In [5]: for i in range(3):
   ...:         for j in range(3):
   ...:             if [i,j] in a:
   ...:                 print a
   ...: 
[[1, 2], [1, 3]]

(这应该是评论,但我还不能留下它们。)

编辑:

原来你在a列表中有字符串。 然后,您还需要将int转换为str

a=[['1','2'],['1','3']]
for i in range(3):
    for j in range(3):
        if [str(i), str(j)] in a:
            print a

答案 3 :(得分:0)

此代码适用于我:

>>> a = [[1, 2], [3, 4], [13, 11]]
>>> 
>>> for i in range(10):
...         for j in range(10):
...                 if [i, j] in a: 
...                         print [i, j] 
... 
[1, 2]
[3, 4]
>>> 

我不确定您的代码有什么问题。确定你在第一行中缺少']'。

答案 4 :(得分:0)

不要忘记[a,b]不是python中的[b,a],所以如果你想考虑[A,B]和[B,A],你可能想要在你的元组中订购2个值是一样的:

如果列表很大且有冗余,您可能还想使用set(your_list)。

在您的代码示例中,您将比较整数和字符串:

['1', '2'] # this is a 2-list of strings '1' and '2'
[1, 2] # this is a 2-list of integers 1 and 2