使用嵌套列表[machine#,job#]在3台计算机上计划4个作业
schedule = [[1, 0], [2, 1], [3, 2], [3, 3]]
我想计算一下机器3的使用频率。
我尝试使用,schedule.count(3)
但没有得到任何输出,我想它还是会检查所有元素。
要使用count,您需要创建计算机列表(通过从对列表中提取每台计算机)并计算的出现次数3
,例如,如下所示:
schedule = [[1, 0], [2, 1], [3, 2], [3, 3]]
lst_count = [ma for ma, _ in schedule].count(3) # using list and count
上面的方法效率低下,因为它会创建一个列表并对其应用计数。一种更有效的方法是使用@schwobaseggl建议的生成器表达式,以下是建议的生成器的一种替代方法:
schedule = [[1, 0], [2, 1], [3, 2], [3, 3]]
gen_count = sum(1 for ma, _ in schedule if ma == 3) # using a generator
最后,如果您只想计算单台计算机的出现次数,1
并且例如,如果您想要多台计算机的出现次数,那么两种方法都可以正常工作3
,我建议您使用Counter:
from collections import Counter
schedule = [[1, 0], [2, 1], [3, 2], [3, 3]]
counts = Counter(ma for ma, _ in schedule) # using Counter
print(counts[3])
print(counts[1])
输出量
2
1
更新资料
除上述方法外,您还可以使用一个简单的for
循环和一个计数器变量:
schedule = [[1, 0], [2, 1], [3, 2], [3, 3]]
counter = 0
for ma, _ in schedule:
if ma == 3:
counter += 1
print(counter) # 2
注意
该ma, _ = x
符号称为拆包。在编写时,ma, _
Python期望schedule
列表中的每个元素都是一对元素。例如,x, y = [1, 2]
将值1
到x
和值2
到y
。使用_
简单意味着忽略第二个值。
进一步
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句