我有一个整数列表列表:
ls = [[1,2,3],[2,2,3],[1,1,3]]
我希望最终得到一个包含len(ls[0])
个元素的列表,每个元素都是该索引中最常出现的元素。在此示例中,结果为[1 (appears in first&last), 2 (appears in first&second), 3 (appears in all)]
我尝试使用循环,并希望内置像all
(大多数?)
ls = [[1,2,3],[2,2,3],[1,1,3]]
ls2=[]
ls2 =[item for sub in ls for item in sub]
ls2
Out[40]: [1, 2, 3, 2, 2, 3, 1, 1, 3]
ls3=[]
for item in len(ls):...
这样做的方法是什么?
答案 0 :(得分:3)
转置您的列表,应用计数器。
>>> from collections import Counter
>>> ls = [[1,2,3],[2,2,3],[1,1,3]]
>>> counts = [Counter(x) for x in zip(*ls)]
>>> [c.most_common(1)[0][0] for c in counts]
[1, 2, 3]
如果两个数字共享相同索引的最高出现次数,则会选择一个任意数字。
答案 1 :(得分:1)
我的(另类解决方案)2美分:
>>> ls = [[1, 2, 3], [2, 2, 3], [1, 1, 3]]
>>> l_mc = [max(x, key=x.count) for x in zip(*ls)]
>>> l_mc
[1, 2, 3]
答案 2 :(得分:0)
这是另一种方式:
console.log("Platform", platform);