如何从列表中对数据进行排序并在列表中附加出现次数

时间:2016-10-02 22:40:25

标签: arrays python-3.x sorting

我无法解析这些数据。我想知道每个列表中有多少#1。在找到该号码后,我想将其附加到另一个列表中以供日后使用。

我似乎得到了输入:

--> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

当我真正想要的时候:

--> [2, 2, 2, 2, 0, 2, 2, 1, 11, 0]

这是代码:

d = []
count = 0

b = [[1,3,6,2,7,3,9,2,7,1,7], 
     [1,5,8,3,0,3,6,2,7,2,1],
     [1,5,2,6,8,6,2,5,1,8,9],
     [5,2,5,2,1,8,1,5,2,4,6],
     [5,7,2,7,3,7,3,7,3,9,2],
     [1,5,8,3,0,3,6,2,7,2,1],
     [5,2,5,2,1,8,1,5,2,4,6],
     [3,6,1,5,7,8,4,3,6,3,3],
     [1,1,1,1,1,1,1,1,1,1,1],
     [3,4,5,6,8,5,7,5,7,3,7]]

for i in b:
    for x in b:
        if x == 1:
            count =+ 1
    d.append(count)
    count = 0

print(d)

1 个答案:

答案 0 :(得分:0)

你在第二个for循环中迭代错误的对象,我相信你的意思是:

for x in i:

这就是你得到0 s

的原因

标准Counter模块中有一个collections类,因此您可以简化此操作:

>>> from collections import Counter
>>> [Counter(i)[1] for i in b]
[2, 2, 2, 2, 0, 2, 2, 1, 11, 0]

你也可以在没有Counter类的情况下更加冗长地执行此操作:

>>> [sum(1 for x in i if x == 1) for i in b]
[2, 2, 2, 2, 0, 2, 2, 1, 11, 0]