Найти процент повторяющегося элемента в списке Python

a = []  
for j in range(20):  
    a.append(randint(0,10))
a.sort()
print(a)

b = [x for x, j in Counter(a).items() if j > 1] #нахожу числа, которые повторяются

c = random.choices(b, k = 1) #выбираю любое число из списка b  
print("random number:", c)

for j in res:  
    res = (длина повторяющегося элемента) * 100 / len(a)

print("procent =", res)

Решил поэксперементировать со списками и наткнулся на проблему. Мне нужно подсчитать количество элементов, которые повторяются, но что-то у меня не получается.


Ответы (2 шт):

Автор решения: Zhihar

способ 1: универсальный

import random

size = 20
arr = [random.randint(0, 10) for _ in range(size)]

stats = {}

for i in arr:
  if i in stats:
    stats[i] += 1
  else:
    stats[i] = 1

print(stats[random.choice(arr)])

способ 2: простой

import random

size = 20
arr = [random.randint(0, 10) for _ in range(size)]

print(arr.count(random.choice(arr)))
→ Ссылка
Автор решения: CrazyElf

Как вариант - я поправил ваш код до рабочего состояния:

from random import randint, choices
from collections import Counter

a = []  
for j in range(20):  
    a.append(randint(0,10))
a.sort()
print(a)

cnt = Counter(a)

b = [x for x, j in cnt.items() if j > 1] #нахожу числа, которые повторяются

c = choices(b, k = 1)[0] #выбираю любое число из списка b  
print("random number:", c)

res = cnt[c] * 100 / len(a)

print("procent =", res)

Вывод:

[0, 2, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 7, 7, 7, 8, 8, 8, 10]
random number: 4
procent = 25.0
→ Ссылка