使用for循环和语句的python列表理解

使用for循环和语句的python列表理解,python,python-3.x,list-comprehension,Python,Python 3.x,List Comprehension,我想知道是否有可能在列表中列出这一点。 “total=0”行给出了错误 listoflists=[[1,2,5],[1,1,1],[1,2,2,2,1]] result=[] for lis in listoflists: total = 0 for i in lis: if i==1: total+=1 result.append(total) 我能想到的就是 result = [total for lis in li

我想知道是否有可能在列表中列出这一点。 “total=0”行给出了错误

listoflists=[[1,2,5],[1,1,1],[1,2,2,2,1]]
result=[]

for lis in listoflists:
    total = 0
    for i in lis:
        if i==1:
            total+=1
    result.append(total)
我能想到的就是

    result = [total for lis in listoflists total=0 for i in lis if i==1 total +=1]
但当然不行,我找不到如何处理列表理解中不是ifs或for循环的语句(在本例中为“total”)


如果您能帮助计算每个子列表中出现的
1
,我们将不胜感激:

listoflists = [[1,2,5],[1,1,1],[1,2,2,2,1]]
result = [i.count(1) for i in listoflists]

print(result)
输出:

[1, 3, 2]

要计算每个子列表中出现的
1
次数:

listoflists = [[1,2,5],[1,1,1],[1,2,2,2,1]]
result = [i.count(1) for i in listoflists]

print(result)
输出:

[1, 3, 2]

仅用简单的列表理解是不可能的

如果您还可以使用一些函数,则可以对列表中的l使用
[sum(filter(lambda x:x==1,l))

编辑:


[listsoflists中l的l.count(1)]
当然更好。

仅用简单的列表理解是不可能的

如果您还可以使用一些函数,则可以对列表中的l使用
[sum(filter(lambda x:x==1,l))

编辑:


[listsoflists中l的l.count(1)]
当然更好。

您只需执行此操作即可获得
1的总计数:

result = sum([l.count(1) for l in listoflists])
或者,如果您需要子阵列中的单个计数,则应执行以下操作:

result = [l.count(1) for l in listoflists]
所以

以及:


您只需执行此操作即可获得
1
的总计数:

result = sum([l.count(1) for l in listoflists])
或者,如果您需要子阵列中的单个计数,则应执行以下操作:

result = [l.count(1) for l in listoflists]
所以

以及:

虽然在这种情况下

[l.count(1) for l in listoflists]
这是一个有效的答案

从概念上讲,在您可以使用的子列表上处理案例中的一些任意聚合(例如不同于简单求和)

虽然在这种情况下

[l.count(1) for l in listoflists]
这是一个有效的答案

从概念上讲,在您可以使用的子列表上处理案例中的一些任意聚合(例如不同于简单求和)


单凭列表理解是不可能的,单凭列表理解是不可能的。