Кто-то может объяснять мне, что он делает этот код?

l = [ 1, 10, 4, 2, 4, 3, 3, 1, 1, 3]    
# moda                                                                                   
repeticiones = 0                                                                         
for i in l:                                                                              
    apariciones = l.count(i)                                                             
    if apariciones > repeticiones:                                                       
        repeticiones = apariciones                                                       

modas = []                                                                               
for i in l:                                                                              
    apariciones = l.count(i)                                                             
    if apariciones == repeticiones and i not in modas:                                   
        modas.append(i)                                                                  

print "moda:", modas 
1
задан 21.03.2019, 10:50
1 ответ

После того, как видит cГіdigo оцениваются две части, будучи второй, которая выдает моды согласно частоте mГЎxima найденная в первой части.

AquГ - anГЎlisis для l = [ 1, 10, 4, 2, 4, 3, 3, 1, 1, 3]. SГіlo нужен доводить до сведения, что положения в списках начинают считаться с нуля (0).

Первое Сообщение

# Primer Parte
repeticiones = 0
for i in l:
    apariciones = l.count(i)
    if apariciones > repeticiones:
        repeticiones = apariciones
        print(i, apariciones, repeticiones)
        # se imprime
        # 1 3 3

funciГіn l.count(i) считает элементы, которые есть в списке l, в первой iteraciГіn i es igual a 1, потому что - элемент posiciГіn нуль l[0]... print(l[0]) # se imprime 1

В этом моменте переменная apariciones берет стоимость 3, потому что в списке l повторяют nГєmero 1 три раза.

Потом имеет по отношению к себе условного if, ввиду того, что переменная repeticiones изначально - нуль (0) она expresiГіn apariciones > repeticiones serГЎ True и repeticiones он asignarГЎ стоимость 3, в этом смысле получает последовательность 1, 3, 3 (l[0], apariciones, repeticiones)

, И когда подходит близко к шестой posiciГіn l[5]=3 - помнить, что он начинает в нуле подсчет , - 3 повторяют три раза тогда как уже повторения стоят 3 в условном if по отношению к себе имеет следующая expresiГіn 3>3, это serГЎ False и не detectarГЎ, что nГєmero три (3) из списка l tambiГ©n.

Обобщая первая часть функционирует, чтобы обнаруживать самую большую частоту , но sГ - существуют элементы в списке, у которых есть та же частота, tomarГЎ, информация об элементе mГЎs prГіximo в нее posiciГіn нуль (0) вышеупомянутого списка.

Вторая Часть

# Segunda Parte
modas = []
for i in l:
    apariciones = l.count(i)
    if apariciones == repeticiones and i not in modas:
        modas.append(i)

print( "moda:", modas)
# Se imprime
# moda: [1, 3]

Восток cГіdigo ищет в частности, которые являются модами - даже повторенными , - в этом смысле, значимое вторая часть , он состоит та expresiГіn в том, что он идет внутри условного if: Такой

apariciones == repeticiones and i not in modas

Как repeticiones равен трем (3) - стоимость, взятая из первой части - повторяет новости список l

Тогда verbalizando первая iteraciГіn имеется:

¿3==3 "y" 1 "no está" en la lista modas?

- эквивалент True and True darГЎ True, потому что 1 не estГЎ включенный в список modas ввиду того, что вышеупомянутый список estГЎ пустая в этой инстанции.

Потом verbalizando шестая iteraciГіn l[5], - помнить, что он начинает в нуле подсчет, [1159-]

 ¿3==3 "y" 3 "no está" en la lista modas?

год - эквивалент True and True darГЎ True, потому что 3 не estГЎ включенный в список modas.

Тогда имеет по отношению к себе вид висячего замка с i not in modas, потому что начиная с нее sГ©ptima posiciГіn начинают появляться элементы 1 и 3, которые уже были включены в список modas, следовательно уже не необходимо они включать с нею funciГіn modas.append(i), которая вводит их в список соответствующие modas, идут identificГЎndose элементы, Ваш эквивалент serГ - в:

modas.insert(len(modas)+1,i)

Обобщая, в вторая часть случается, что элементы совпадают с mГЎximo nГєmero повторений, полученный в , первая часть , а именно гарантирует себе, что список modas включил их nГєmeros с самой большей частотой, когда он существует mГЎs моды.

4
ответ дан 02.12.2019, 05:21