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

标签 python list syntax-error list-comprehension

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/

相关文章:

python - tf.keras.callbacks.ModelCheckpoint 与 tf.train.Checkpoint

c# - 多线程网络抓取工具的最佳解决方案?

python - 为什么在解包元组时 var 类型会发生变化?

python - if 语句与 return 到一行

python - 属性错误: 'NoneType' object has no attribute 'subscribe'

python - 减少函数调用

python - 为什么 matplotlib 直方图的 `normed` 参数没有任何作用?

python - 更改未知初始形状列表的所有值

sql - 使用EXISTS的SQL语法错误

PHP:不正确的 SQL 语法错误