我正在努力编写一个函数来遍历数字列表 [2, 4, 3, 2, 2] 并重新计算重复项的值,以便此示例中的所有 2将加在一起(=6),然后除以列表的长度。长度 = 5。 输出:[6/5, 4, 3, 6/5, 6/5]
每个数字都必须留在原位,输入列表中的数字可以是正数也可以是负数。 关于如何处理的任何想法?
请您参考如下方法:
首先,让我们导入 Counter 并定义您的列表:
>>> from collections import Counter
>>> x = [2, 4, 3, 2, 2]
其次,我们创建 ctr,它是 Counter 的一个实例,它将包含列表中每个元素出现的次数:
>>> ctr = Counter(x)
最后,让我们创建您想要的新列表:
>>> [i if ctr[i]==1 else ctr[i]*i/len(x) for i in x]
[1.2, 4, 3, 1.2, 1.2]
i if ctr[i]==1 else ctr[i]*i/len(x) 是一个三元语句。如果 i 在 x 中只出现一次,它的计算结果为 i。否则,它的计算结果为 i 乘以 i 在 x 中出现的次数除以 x 的长度: ctr[i]*i/len(x).
