检查元组在某个位置的元素 - 快捷方式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查元组在某个位置的元素 - 快捷方式?相关的知识,希望对你有一定的参考价值。

我试图在列表中找到元组,在第二个位置有一个符号。该列表看起来像这样:

list = [ (0, "a", 1), (1, "b", 2), (2, "c", 3)]

我显然可以找到所有的元组,例如通过运行以下代码获得“c”:

for item in list:
    if item[1] == "c":
        return item

我只是想知道我是否可以将上面给出的代码的line1和line2组合起来做类似的事情

for (numb1, symbol=="c", numb2) in list:
    return (numb1, symbol, numb2)

有谁知道这是否有快捷方式?

谢谢!

答案

你可以使用filter快速lambda。

def get_cs(ts):
    return filter(lambda t: t[1] == 'c', ts)

或者,因为您似乎只返回找到的第一个值:

def get_cs(ts):
    return next(filter(lambda t: t[1] == 'c', ts), None)
另一答案
l = [item for item in list if item[1]=="c"]
另一答案

你可以使用列表理解:

input = [(0, "a", 1), (1, "b", 2), (2, "c", 3)]
output = [item for item in input if item[1] == "c"]

我建议你不要使用list作为变量名,因为它会覆盖list()函数

编辑:我刚刚读到列表理解不是一个选项所以@adam-smith答案会这样做。性能方面,列表理解是作为map-filter函数实现的。此外,他们更具可读性,过滤功能,imho。

另一答案

试试这个 :

print [a for a in alist if a[1]=='c']

输出:

[(2, 'c', 3)]
另一答案

由于列表推导似乎不是一个选项,你似乎只对第一个匹配的元组感兴趣,生成器表达式如何:

next(t for t in ts if t[1] == 'c', None)

以上是关于检查元组在某个位置的元素 - 快捷方式?的主要内容,如果未能解决你的问题,请参考以下文章

python 元组(跟列表类似)

为啥元组在 Elixir 中不可枚举?

Python 元组 — tuple

Python 元组 — tuple

Python 元组 — tuple

Python基础-04元组