У меня есть список с целыми числами, мне нужно найти, какой элемент повторяется больше всего, тогда функция должна возвращать две переменные (значение, число), значение - повторяющийся элемент, а число - количество раз, которое повторяется
вход
B = [1, 5, 1, 3, 5, 1]
выход
1 3
У меня есть код, который работает с первым элементом в списке, но когда он переходит к следующему циклу, он начинает все с нуля, поэтому я изо всех сил пытался сохранить то, что я получил в первом цикле, и сравнить со вторым циклом, чтобы увидеть, какой один мне нужно сохранить.
Для этой функции мне не разрешено использовать какой-либо модуль или библиотеку, например «count», или любой другой расширенный код, настолько простой, насколько это возможно для уровня новичка.
def counting(B):
n = len(B)
tempcount = []
tempcval = []
for i in range(0,n-1):
cval=B[i]
count = 0
for next in B:
if next == cval:
count += 1
tempcount.append(count)
tempcval.append(cval)
return count,cval
def main():
list = [1, 5, 1, 3, 5, 1]
a,b = counting(list)
print(a,b)
main()
ожидаемый результат
3 1
фактический результат
2 5
Решение проблемы
Хорошим решением может быть использование collections.Counter:
>>> import collections
>>> c = collections.Counter([1, 5, 1, 3, 5, 1])
>>> c
Counter({1: 3, 5: 2, 3: 1})
>>> c.most_common(1)
[(1, 3)]
В функции это может выглядеть так:
import collections
def counting(the_list):
c = collections.Counter(the_list)
data = c.most_common(1)[0]
print('value', data[0])
print('count', data[1])
return data[1], data[0]
Комментариев нет:
Отправить комментарий