Python:用相同值替换列表中的重复值

问题描述 投票:0回答:4

既定的输出:

X = [1, 3, 3, 5, 4, 8, 6]

本代码将自动替换所有重复的项目3
python list for-loop duplicates
4个回答
1
投票

最快

1
投票
您在列表上迭代您,并将一个数字添加到字典计数器中。 然后,您可以创建一个具有列表理解的列表:如果多次重复一次,则将值更改为3。 litter较慢,稍短一点

xi = {x:i for i, x in enumerate(X)} dp = {x: xi[x]>i for i, x in reversed(list(enumerate(X)))} Y = [3 if dp[x] else x for x in X]

您在X上迭代您,并保留每个值的最后索引。然后,您再次迭代但相反的顺序,询问该值是否还有另一个索引。然后,使用该信息,您可以创建所需的输出。所有使用列表/dict理解。这更多是一种功能性的方法。

这是一个非常简单的,并使用基本列表理解。请参考下面的代码相同:

X = [1, 2, 2, 5, 4, 8, 6] print([3 if e==2 else e for e in X])

您应该能够将循环用于此

my_list = [1, 2, 2, 5, 4, 8, 6] new_list = [] for i in range(len(my_list)): if my_list[i] in new_list: new_list.append(3) else: new_list.append(my_list[i]) print(new_list)


0
投票

[1, 3, 3, 5, 4, 8, 6]



0
投票

X = [t if t not in X[:i] + X[i+1:] else 3 for i, t in enumerate(X)]

	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.