簡體   English   中英

如何檢查Python列表中是否存在元組?

[英]How to check whether a tuple exists in a Python list?

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

輸出是空白的

那怎么實現呢?

這是一個例子:

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

如果你需要這么做很多時候考慮使用set ,因為它有一個更快的收容檢查。

代碼不起作用,因為'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或sets更好)

在我的解釋器(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

這段代碼對我來說很好:

>>> 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]
>>> 

我不確定你的代碼有什么問題。 肯定你在第一行中缺少']'。

不要忘記[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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM