Понимание списка "Перевод" - PullRequest
0 голосов
/ 03 марта 2020

Может ли кто-нибудь перевести это понимание списка в несколько строк, действительно испытывая трудности с его пониманием!

friends = [i for x, i in enumerate(friends) if (x+1) % action]

Ответы [ 3 ]

2 голосов
/ 03 марта 2020

Должно быть так, если развернуто. Я создал список с именем temp_list и добавил для ясности print.

temp_list = []
for x, i in enumerate(friends):
    if (x+1) % action:
        temp_list.append(i)

friends = temp_list
print(friends)          
0 голосов
/ 03 марта 2020

Поскольку вы перебираете friends, используя перечисление, мы можем предположить, что friends уже содержит некоторые значения.

Понимание списка заменяет первоначальное значение списка friends другим списком, который мы получаем как вывод логики понимания c. Обратите внимание, что все это делается в одну строку.

Если мы разбиваем понимание на расширенную форму, мы не сможем перебрать список и изменить список одновременно (мы можем сделать это, но это не рекомендуется, и мы можем получить неправильные значения).

Так что расширенная форма понимания списка выше будет выглядеть так:

temp = []
for x, i in enumerate(friends):
    if (x+1) % action:
        temp.append(i)

friends = temp 
0 голосов
/ 03 марта 2020

При развертывании это выглядит так:

friends = [] # Intialize the friends list

# For loop with enumerate function where x is the index and i the value
for x, i in enumerate(friends): 
    if (x+1) % action:
        friends.append(i)
...