Наиболее частое число - PullRequest
0 голосов
/ 29 апреля 2018

Да, есть много тем об этом. но мой вопрос другой. Я написал свой код, и это;

A = [1,2,3,4,4,4,5,6,6,6,6,6,7,8,8,8,8,8,8,7,7]

def countFreq(A):
    n=len(A)
    count=[0]*n                     # Create a new list initialized with '0'
    for i in range(n):
        count[A[i]]+= 1              # increase occurrence for value A[i]
    result = []
    for x in count:
        if x:
            result.append(x)
    return result
print(countFreq(A))

вывод:

[1,1,1,3,1,5,3,6]

это означает, сколько чисел существует, ту функцию, которую они рассчитывали есть одна "1" и пять "6" и шесть "8" и т. д.

но я хочу просто увидеть большую частоту. как этот код, просто увидев 8. Как я могу сделать? Пожалуйста, покажи путь с моим кодом. не отличается код Я не хочу встроенную функцию или любой готовый код. пожалуйста, посмотрите путь только в моем коде.

edit: На самом деле, я хочу видеть из вывода моего кода;

A = [1,2,3,4,4,4,5,6,6,6,6,6,7,8,8,8,8,8,8,7,7]
Most-frequency number is : 8

или

A = [1,2,3,3,3]
Most frequency number is : 3

или

A = [1,1,1,2,3,4]
most frequency number is : 1

Я хочу это ..

править: На мой вопрос учитель намекнул, это так; «Подсказка: Вы можете записать количество появлений каждой цифры в новом списке, индексы которого будут сопоставлены со значениями входных цифр».

Пожалуйста, кто-нибудь, кто видит это, покажите мне путь с моим кодом ...

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Есть много проблем с вашим кодом. Лучший способ реструктурировать свою логику - использовать словарь.

Путь Python состоит в том, чтобы использовать collections.Counter или, поскольку вы хотите предоставить логику, collections.defaultdict:

A = [1,2,3,4,4,4,5,6,6,6,6,6,7,8,8,8,8,8,8,7,7]

from collections import defaultdict

def countFreq(A):
    d = defaultdict(int)
    for item in A:
        d[item] += 1

    maxval = max(d.values())
    maxnum = [k for k, v in d.items() if v==maxval]
    return maxnum

print(countFreq(A))
0 голосов
/ 29 апреля 2018

Измените свой print() оператор на print(countFreq(A).index(max(countFreq(A))) + 1).

...