如何从Python列表中提取元素,同时考虑提取元素的位置?

2021-10-17 17:40:26 发布

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

给定listx例如

[4,6,7,21,1,7,3]

我需要提取那些less than or equal to 4的值。这很容易做到,但我还需要注意列表中出现这些值的位置。如果所有的值都是唯一的,我知道我可能会以某种方式使用list.index()。但是会有重复的值。如何最好地实现这一点?你知道吗

2条回答
网友
1楼 ·

简单点怎么样

[(i, val) for i, val in enumerate([[4,6,7,21,1,7,3]) if val <= 4]

或者根据你的用例,也许字典更合适?从索引到值:

{i:val for i, val in enumerate([4,6,7,21,1,7,3]) if val <= 4}

或从值到索引:

from collections import defaultdict

indexes = defaultdict(list)
for i, val in enumerate([4,6,7,21,1,7,3]):
    if val <= 4:
        indexes[val].append(i)
网友
2楼 ·

您可以创建另一个列表,将小于等于4的元素的元组存储为第一个元素,将其索引存储为第二个元素,如下所示:

    my_list = [4, 6, 7, 21, 1, 7, 3]
    req_list = []
    for i in range(len(my_list)):
        e = my_list[i]
        if e <= 4:
            req_list.append((e, i))

这里req_list将有一对元组,第一个元素是小于等于4的元素,第二个元素是该元素的索引。 e、 g

如果

我的列表=[4,6,7,21,1,7,3]

那么

需求列表=[(4,0),(1,4),(3,6)]

相关问题