首页 > 解决方案 > 使用列表理解修改列表

问题描述

我想使用列表理解修改列表。像这样的东西:

c = [10,20,30,40,50,60,70,80,90]
a = [0,1,2]
b = [3,4,5]

c[a[jj]] = [c[a[jj]]+c[b[jj]] for jj in range(len(a))]

我的预期输出:

c = [50,70,90,40,50,60,70,80,90]

但是每次出现错误时:

    c[a[jj]] = [c[a[jj]]+c[b[jj]] for jj in range(len(a))]
NameError: name 'jj' is not defined

我在这里做错了什么?

编辑:我试图在不使用 for 循环的情况下复制下面的语句:

for jj in range(len(a)):
    c[a[jj]] = c[a[jj]] + c[b[jj]]

标签: pythonlistlist-comprehension

解决方案


jj未在左侧定义。即使是这样,作业也不会做你想做的事。你想要一个常规for循环:

for jj in range(len(a)):
    c[a[jj]] = c[a[jj]] + c[b[jj]]

但是,您可以使用enumerate和 add-assign ( +=) 使其更清洁:

for jj, x in enumerate(a):
    c[x] += c[b[jj]]

或者更好的是使用zip

for x, y in zip(a, b):
    c[x] += c[y]

推荐阅读