python中列表特定元素的总和

python中列表特定元素的总和,python,list,python-3.x,count,Python,List,Python 3.x,Count,问题要求的是一个列表,其中包含给定索引中数字2的所有出现次数 例如: [1, 2, 2] [2, 1, 1] [1, 1, 2] 给予 当 [2, 2, 2] [2, 1, 2] [2, 2, 1] 给出: [3,2,2] 如果我理解正确,您尝试将矩阵向右旋转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的所有出现次数

例如:

[1, 2, 2]
[2, 1, 1]
[1, 1, 2]
给予

[2, 2, 2]
[2, 1, 2]
[2, 2, 1]
给出:

[3,2,2]

如果我理解正确,您尝试将矩阵向右旋转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]

如果我理解正确,您尝试将矩阵向右旋转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]

迭代长度为5的列表中的每个索引,然后查看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]

迭代长度为5的列表中的每个索引,然后查看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]


请澄清这个问题,并使用一个可读的例子在第四元素中有4个2,为什么它只显示3个1?毕竟我应该得到这样一个列表:这是什么?还有,我还是不明白你的例子……你试过什么?哦,天哪,我不能理解其中的逻辑。@KevinGuan它不会给出预期的输出<代码>[i.count(2)for i in l]请澄清问题并使用可读示例第四元素中有4个2,为什么它只显示3个1?毕竟我应该得到这样的列表:这是什么?还有,我还是不明白你的例子……你试过什么?哦,天哪,我不能理解其中的逻辑。@KevinGuan它不会给出预期的输出
[i.count(2)for i in l]
我想这回答了我的问题,但我不明白电流是什么,使用
cur\u l.count(2)
len([x for x in cur\u l如果x==2])更简单吗
@DavidNunes-我无法读取压缩成一行的代码,但是,如果您想在行中计算这两个,而不进行换位,那么在第一种解决方案中,只需在
数组(l)
之后删除
.T
;在第二个解决方案中,将
map(list,zip(*l))
替换为'l'。但这似乎不是你要问的问题。@Stuart-当然,这对非numpy的解决方案是有效的。我会相应地编辑。我想要的正是你给我看的,我很感激。我认为这回答了我的问题,但我不明白电流是什么。使用
cur\u.count(2)
len([x代表x,如果x=2])更简单。
@DavidNunes-我无法读取压缩成一行的代码,但是,如果您想在行中计算这两个,而不进行换位,那么在第一种解决方案中,只需在
数组(l)
之后删除
.T
;在第二个解决方案中,将
map(list,zip(*l))
替换为'l'。但这似乎不是你要问的问题。@Stuart-当然,这对非numpy的解决方案是有效的。我会相应地进行编辑。我想要的正是你给我看的,我很欣赏这部作品,但避免使用
sum
作为变量name@Stuart我是编程新手,这仅仅是一个python约定,还是sum太笼统了?@MonteCarlo:Stuart的意思是
sum()
是一个函数名,将其用作变量名将无法再次使用该函数。如果将a用作变量名,Python将抛出错误,但如果将其中一个用作变量名,则不会抛出错误,如
sum
。正如凯文所说,应该避免使用
sum
作为变量名,因为这样你就不能使用内置函数了。@Stuart-你能帮我解决我的新问题吗?事实上,我想要一个和我想要的有点不同的东西。这是可行的,但要避免使用
sum
作为变量name@Stuart我是编程新手,这仅仅是一个python约定,还是sum太笼统了?@MonteCarlo:Stuart的意思是
sum()
是一个函数名,将其用作变量名将无法再次使用该函数。如果将a用作变量名,Python将抛出错误,但如果将其中一个用作变量名,则不会抛出错误,如
sum
。正如凯文所说,应该避免使用
sum
作为变量名,因为这样你就不能使用内置函数了。@Stuart-你能帮我解决我的新问题吗?事实上,我想要的东西和我想的有点不同