我正在尝试将以下代码转换为列表理解的教育目的:
addBtnView
我尝试过使用sum()或以下代码返回false结果的一些变体:
total = 0
for c in some_list:
if c == 'US':
total += 1
答案 0 :(得分:4)
你不需要建立一个清单;只需使用生成器表达式和sum()
:
total = sum(1 for c in some_list if c == 'US')
你没有总结c
,你正在总结1
个整数。
或者,让list
对象为您计算:
total = some_list.count('US')
后者要快得多;然后,循环和比较完全在C代码中完成:
>>> import timeit
>>> import random
>>> some_list = [random.choice(['US', 'United Kingdom', 'The Netherlands', 'Norway']) for _ in range(1000)]
>>> timeit.timeit("sum(1 for c in some_list if c == 'US')", globals={'some_list': some_list}, number=100000)
3.54722355294507
>>> timeit.timeit("some_list.count('US')", globals={'some_list': some_list}, number=100000)
1.0752556619700044
答案 1 :(得分:2)
试试这个片段,希望这会有所帮助
total = sum(1 for c in some_list if c == 'US')
答案 2 :(得分:1)
values=['us', 'uk', 'us', 'au', 'us', 'uk', 'uk', 'us']
count = sum(1 for c in values if c=='us')