Почему я получаю ошибку в заявлении о понимании списка? - PullRequest
0 голосов
/ 21 октября 2018
transfers = [['owen', 'susan', '10'], ['owen', 'robert', '10'], ['owen','drew', '10'], ['fred', 'owen', '20']]

people = ['drew', 'fred', 'owen', 'robert', 'susan']

bals = [0]*len(people)

for p in people:

    bals[k for k in range(len(people))] = [i[2] for i in transfers if p in i]
                                                                   ^
SyntaxError: invalid syntax

Почему я получаю эту ошибку?

i [2] для i в переводах должны быть числа в списках "переводов", и я хочу, чтобы это были только числа изсписки, содержащие имя определенного человека (p) в цикле.

1 Ответ

0 голосов
/ 21 октября 2018

Это должно быть

for i, p in enumerate(people):
    bals[i] = [t[2] for t in transfers if p in t]

Или,

bals = [[t[2] for t in transfers if p in t] for p in people]

Ваш код не работает, так как подписка на списки не принимает понимание списка.

Кроме того, подписка на списки принимает generator.Помещение списка в круглые скобки создает генератор.Правильный код в терминах синтаксис может быть bals[(k for k in range(len(people)))], где в середине это generator объект.Но генератор все еще не будет работать со списком и поэтому является TypeError.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...