簡體   English   中英

如何測試一個整數是否在列表的子列表中

[英]how to test if an integer is in a sub-list in a list

我想測試 3 是否是元素的第一個數字(整數或子列表的第一個),如下所示:

lst=[2, [3,6], [4,1,7]]
3 in lst

結果應該是 True,因為 3 是 [3,6] 的第一個元素。

順便說一句:我的數據集不會讓我的列表像 [3, [3,7]] (單獨和在子列表中)

你可以用一個非常簡單的遞歸函數來做到這一點,比如:

l =[2, [3,6], [4,1,7]]

def inList(l, n):
    if isinstance(l, list):
        return l[0] == n or any(inList(member, n) for member in l[1:])
    else:
        return False

inList(l, 3) # True
inList(l, 9) # False
inList(l, 2) # True

這也具有深入嵌套列表的優點:

l =[2, [3,6], [4,1,[9,[5]], 7]]
inList(l, 5) # True

假設沒有子子列表:

l=[2, [3,6], [4,1,7]]
first_elements = [i[0] if isinstance(i, list) else i for i in l]  # [2, 3, 4]
print(3 in first_elements)

輸出:

True

您可以遍歷列表,並檢查子元素sub是列表還是整數,並返回您想要的結果:

L = [2, [3,6], [4,1,7]]
num = 2
res = False
for sub in L:
    if isinstance(sub, list):
        if num in sub:
            res = True
            break
    else:
        if num == sub:
            res = True

print(res)

暫無
暫無

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

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