我有一个列表,列出了Python中的连接图。此列表看起来像n * 2矩阵
example = [[1, 2], [1, 5], [1, 8], [2, 1], [2, 9], [2,5] ]
我想要做的是找到列表的第一个元素的值,其中第二个元素等于用户定义的值。例如:
在Matlab中,我可以使用
output = example(example(:,1)==input, 2);
但我想用Python(以最pythonic和最有效的方式)这样做
答案 0 :(得分:2)
您可以将列表理解用作过滤器,例如
>>> example = [[1, 2], [1, 5], [1, 8], [2, 1], [2, 9], [2,5]]
>>> n = 5
>>> [first for first, second in example if second == n]
[1, 2]
答案 1 :(得分:1)
您可以使用Python函数映射并过滤非常舒适:
>>> example = [[1, 2], [1, 5], [1, 8], [2, 1], [2, 9], [2,5] ]
>>> n = 5
>>> map(lambda x: x[0], filter(lambda x: n in x, example))
[1,2]
使用lambda,您可以定义anonyme函数... 语法:
lambda arg0,arg1...: e
arg0,arg1 ...是你的fucntion的参数,e是表达式。 他们主要在map,reduce,filter等函数中使用lambda函数。
答案 2 :(得分:0)
exemple = [[1, 2], [1, 5], [1, 8], [2, 1], [2, 9], [2,5] ]
foundElements = []
** input = [...] *** List of Inputs
for item in exemple:
if item[1] in input :
foundElements.append(item[0])