📜  Python - 列表中元素的步频

📅  最后修改于: 2022-05-13 01:55:45.277000             🧑  作者: Mango

Python - 列表中元素的步频

有时,在使用Python时,我们可能会遇到需要在列表中计算频率的问题。这是一个很常见的问题,在许多领域都有用例。但是我们有时会遇到需要增加列表中元素数量的问题。让我们讨论可以执行此任务的某些方式。

方法 #1:使用循环 + defaultdict()
上述功能的组合可用于执行此任务。在此,我们只需使用默认值初始化列表并使用循环增加其频率。

# Python3 code to demonstrate 
# Step Frequency of elements in List
# using loop + defaultdict()
from collections import defaultdict
  
# Initializing loop 
test_list = ['gfg', 'is', 'best', 'gfg', 'is', 'life']
  
# printing original list 
print("The original list is : " + str(test_list))
  
# Step Frequency of elements in List
# using loop + defaultdict()
res_d = defaultdict(int)
res = []
for ele in test_list:
    res_d[ele] += 1
    res.append(res_d[ele])
  
# printing result 
print ("Step frequency of elements is : " + str(res))
输出 :
The original list is : ['gfg', 'is', 'best', 'gfg', 'is', 'life']
Step frequency of elements is : [1, 1, 1, 2, 2, 1]

方法 #2:使用list comprehension + enumerate()
上述功能的组合可以用来解决这个问题。在此我们只是使用 enumerate() 迭代和存储计数器。

# Python3 code to demonstrate 
# Step Frequency of elements in List
# using list comprehension + enumerate()
from collections import defaultdict
  
# Initializing loop 
test_list = ['gfg', 'is', 'best', 'gfg', 'is', 'life']
  
# printing original list 
print("The original list is : " + str(test_list))
  
# Step Frequency of elements in List
# using list comprehension + enumerate()
res = [test_list[ : idx + 1].count(ele) for (idx, ele) in enumerate(test_list)]
  
# printing result 
print ("Step frequency of elements is : " + str(res))
输出 :
The original list is : ['gfg', 'is', 'best', 'gfg', 'is', 'life']
Step frequency of elements is : [1, 1, 1, 2, 2, 1]