要求的是一个列表,其中包含给定索引的所有2个出现次数。
例如:
[1, 2, 2]
[2, 1, 1]
[1, 1, 2]
给出
[1,1,2]
虽然
[2, 2, 2]
[2, 1, 2]
[2, 2, 1]
给出:
[3,2,2]
答案 0 :(得分:4)
如果我正确理解了问题,你可以尝试将矩阵向右旋转90度,然后计算矩阵中每行中两个的数量:
from numpy import array
l = [[1, 2, 2, 1, 1], [1, 1, 2, 2, 2], [1, 1, 1, 2, 2], [2, 2, 1, 2, 2], [2, 2, 1, 1, 1]]
result = [cur_l.count(2) for cur_l in array(l).T]
输出
print result
[2, 3, 2, 3, 3]
修改强>
这是一个没有numpy的解决方案:
>>> [cur_l.count(2) for cur_l in map(list, zip(*l))]
[2, 3, 2, 3, 3]
答案 1 :(得分:2)
迭代长度为五个列表的每个索引,然后查看l中包含2的所有索引。如果是,请将1添加到计数器。在查看l。
中的每个子列表后,将该计数器附加到新列表l = [[1, 2, 2, 1, 1],
[1, 1, 2, 2, 2],
[1, 1, 1, 2, 2],
[2, 2, 1, 2, 2],
[2, 2, 1, 1, 1]]
output = []
for i in range(0, len(l[0])):
sum = 0
for j in range(0, len (l)):
if l[j][i] == 2:
sum += 1
output.append(sum)
print output
输出:
[2, 3, 2, 3, 3]