我试图在列表中找到第二个位置带有某个符号的元组。该列表看起来像这样:
list = [ (0, "a", 1), (1, "b", 2), (2, "c", 3)]
我显然可以找到所有的元组,例如a" c"通过运行以下代码:
for item in list:
if item[1] == "c":
return item
我只是想知道我是否可以将上面给定代码的line1和line2组合起来做
之类的事情for (numb1, symbol=="c", numb2) in list:
return (numb1, symbol, numb2)
有没有人知道这是否有快捷方式?
谢谢!
答案 0 :(得分:3)
您可以将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)
答案 1 :(得分:1)
l = [item for item in list if item[1]=="c"]
答案 2 :(得分:1)
您可以使用列表理解:
input = [(0, "a", 1), (1, "b", 2), (2, "c", 3)]
output = [item for item in input if item[1] == "c"]
我建议你不要将list
用作变量名,因为它会覆盖list()
函数
答案 3 :(得分:0)
试试这个:
print [a for a in alist if a[1]=='c']
输出:
[(2, 'c', 3)]
答案 4 :(得分:0)
由于列表推导似乎不是一个选项,你似乎只对第一个匹配元组感兴趣,那么生成器表达式如何:
next(t for t in ts if t[1] == 'c', None)