在基于一个元素的列表中查找列表

2024-04-25 10:19:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用Python表示连通图的列表。这个列表看起来像一个n*2矩阵

example = [[1, 2], [1, 5], [1, 8], [2, 1], [2, 9], [2,5] ]

我要做的是找到列表中第一个元素的值,其中第二个元素等于用户定义的值。例如:

  • 输入1返回[2](因为[2,1])
  • 输入5返回[1,2](因为[1,5]和[2,5])
  • 输入7返回[]

在Matlab中,我可以使用

output = example(example(:,1)==input, 2);

但我想用Python(以最具Python风格和效率的方式)来实现这一点


Tags: 用户元素列表inputoutput定义风格example
3条回答

您可以使用列表理解作为过滤器,如下所示

>>> 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]
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])

您可以非常轻松地使用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可以定义匿名函数。。。 语法:

lambda arg0,arg1...: e

arg0,arg1。。。是函数的参数,e是表达式。 它们主要在map、reduce、filter等函数中使用lambda函数

相关问题 更多 >