为什么列表理解语句中出现错误?

2024-06-13 07:58:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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 in transfers应该是“transfers”列表中的数字,我只希望它是包含循环中某个人(p)的名字的列表中的数字


Tags: in列表forlenifrange数字fred
1条回答
网友
1楼 · 发布于 2024-06-13 07:58:00

应该是的

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对象。但是生成器仍然不能与list一起工作,因此是一个TypeError

相关问题 更多 >