我正在做一点开发,我需要有一个列表中重复元素的位置。
我为此所做的如下:
FDE = [1,2,3,4,4,3]
for k in range(6):
m=[i for i,x in enumerate(FDE) if x==FDE[k]]
print(m)
屏幕显示给我的结果是:
m=[2.5]
简而言之,它只查找重复的,'3'
而不是'4'
重复的,理想情况下它会打印:
m=[2,3,4,5]
我正在做一点开发,我需要有一个列表中重复元素的位置。
我为此所做的如下:
FDE = [1,2,3,4,4,3]
for k in range(6):
m=[i for i,x in enumerate(FDE) if x==FDE[k]]
print(m)
屏幕显示给我的结果是:
m=[2.5]
简而言之,它只查找重复的,'3'
而不是'4'
重复的,理想情况下它会打印:
m=[2,3,4,5]
有几种方法可以做到这一点,其中一种是使用该方法
count
查看是否在列表中多次找到一个元素。它不是最有效的,但很简洁:离开:
版:
正如我告诉过你的,了解与索引关联的值的一种选择是使用一个字典,该字典将每个唯一的重复元素作为其键,并使用一个以找到它的索引作为其值的列表。
同样有几个选项,一个相对简单的选项是使用
collections.defaultdict
. 我们创建一个字典,将唯一元素存储为键,将它们的索引存储为值,然后我们保留那些具有多个索引的对:离开:
这是对@FJSevilla 给出的出色解决方案的修改,它可以运行得更快一些,因为它删除了一个循环
for
以换取Counter
从列表中创建一个对象,该列表获取一个字典,其中包含每个元素的出现次数(值)列表(键)。作为输出,您会得到一个包含每个元素索引的字典和一个包含重复元素索引的列表。