检查列表中是否存在子列表的最有效方法,忽略最后一个元素

问题描述 投票:0回答:1

我有一个结构如下的列表:

[
    [1, 2, 'A']
    [3, 4, 'B']
    [5, 6, 'C']
    ...
]

我想检查此列表中是否存在一个列表,使得前两个元素是一些数字

m
n
,并忽略最后一个字符串元素。

我知道这是最直接的方法:

def contains_first_two(m : int, n : int, search : list) -> bool:
    
    for el in search:
        if el[0] == m and el[1] == n:
            return True
    
    return False

但我想知道是否有我没有想到的更快的解决方案。

python list search
1个回答
0
投票

使用

tuple()
设置理解
in
以获得更多 Pythonic 和更快的解决方案:

lst = [
    [1, 2, 'A'],
    [3, 4, 'B'],
    [5, 6, 'C'],
]

contains_first_two = (3, 4) in {tuple(sublist[0:-1])for sublist in lst}
print(contains_first_two)

contains_first_two = (3, 0) in {tuple(sublist[0:-1])for sublist in lst}
print(contains_first_two)
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.