Python – 值频率索引列表
有时,在使用Python元组时,我们可能会遇到需要提取元组中每个值的频率的问题。这个问题早已经解决了。我们可以进行修改,在其中我们需要创建列表,其中索引表示键,它的值表示该索引号的频率。这种问题可以在竞争性编程领域有应用。让我们讨论一下我们需要解决这个问题的某些方法。
Input : test_list = [(‘Gfg’, 1), (‘is’, 1), (‘best’, 1), (‘for’, 1), (‘geeks’, 1)]
Output : [0, 5, 0, 0, 0, 0]
Input : test_list = [(‘Gfg’, 5), (‘is’, 5)]
Output : [0, 0, 0, 0, 0, 2]
方法#1:使用循环
这是可以执行此任务的蛮力方法。在此,我们通过迭代和分配预初始化列表来执行分配频率的任务。
# Python3 code to demonstrate working of
# Values Frequency Index List
# Using loop
# initializing list
test_list = [('Gfg', 3), ('is', 3), ('best', 1), ('for', 5), ('geeks', 1)]
# printing original list
print("The original list is : " + str(test_list))
# Values Frequency Index List
# Using loop
res = [0 for _ in range(6)]
for ele in test_list:
res[ele[1]] = res[ele[1]] + 1
# printing result
print("The Frequency list : " + str(res))
输出 :
The original list is : [('Gfg', 3), ('is', 3), ('best', 1), ('for', 5), ('geeks', 1)]
The Frequency list : [0, 2, 0, 2, 0, 1]
方法 #2:使用Counter()
+ 列表推导
上述功能的组合用于解决这个问题。在此,我们使用 Counter() 执行计算频率的任务,并通过列表理解完成列表中的呈现。
# Python3 code to demonstrate working of
# Values Frequency Index List
# Using Counter() + list comprehension
from collections import Counter
# initializing list
test_list = [('Gfg', 3), ('is', 3), ('best', 1), ('for', 5), ('geeks', 1)]
# printing original list
print("The original list is : " + str(test_list))
# Values Frequency Index List
# Using Counter() + list comprehension
cntr = Counter(ele[1] for ele in test_list)
res = [cntr[idx] for idx in range(6)]
# printing result
print("The Frequency list : " + str(res))
输出 :
The original list is : [('Gfg', 3), ('is', 3), ('best', 1), ('for', 5), ('geeks', 1)]
The Frequency list : [0, 2, 0, 2, 0, 1]