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] for i in transfers应该是“transfers”列表中的数字,我只希望它是包含循环中某人(p)名称的列表中的数字。
最佳答案
它应该是
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
对象。但是Generator仍然不能与list一起使用,因此是TypeError
。
关于python - 为什么列表理解语句出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52911539/