使用for循环和语句的python列表理解
我想知道是否有可能在列表中列出这一点。 “total=0”行给出了错误使用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
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]
这是一个有效的答案
从概念上讲,在您可以使用的子列表上处理案例中的一些任意聚合(例如不同于简单求和)
单凭列表理解是不可能的,单凭列表理解是不可能的。