我们必须从用户那里输入列表的长度。然后计算列表中每个元素的频率并使用python打印它们。
我尝试过,这里是代码:
l = []
n = int(input("Enter the length of list : "))
for i in range(0,n):
l.append(int(input("Enter an element : ")))
count = 0
for i in range(len(l)):
for j in range(len(l)):
if (l[i] == l[j]): #Error
count = count + 1
l.pop(j)
else:
print("Count of ",l[i]," is ",count)
count = 0
l.pop(i)
else:
print(l)
出现错误:
第8行,在如果(l [i] == l [j]):IndexError:列表索引超出范围
l.pop
是导致错误的原因,您正在从列表中删除项目,但仍将其恢复为原始大小。使用dict
计数频率
frequencies = {}
for item in l:
if item in frequencies:
frequencies[item] += 1
else:
frequencies[item] = 1
for key, value in frequencies.items():
print(f'Count of {key} is {value}')
或带有get()
for item in l:
freq[item] = frequencies.get(item, 0) + 1
您所需要做的只是对pop语句进行注释
l = []
n = int(input("Enter the length of list : "))
for i in range(0,n):
l.append(int(input("Enter an element : ")))
count = 0
counts={}
for i in range(len(l)):
for j in range(len(l)):
if (l[i] == l[j]): #Error
count = count + 1
#l.pop(j)
else:
counts[l[i]]=count
#print("Count of ",l[i]," is ",count)
count = 0
#l.pop(i)
else:
print(l)
counts
for item,count in counts.items():
print("Count of ",item," is ",count)