listA = ["A","B","C"]
listB = ["a","b","c"]
可以写
listC = [listA[0]+listB[0], listA[1]+listB[1],listA[2]+listB[2]]
但是当我写
i=0
listD = []
while i < len(listA):
listD[i] = listA[i]+listB[i]
i+=1
或
i=0
listD = []
while i < len(listA):
listD[i] = str(listA[i])+str(listB[i])
i+=1
这不好。 请告诉我为什么以及如何纠正它。非常感谢!
答案 0 :(得分:5)
您可以按照@Rakesh的建议使用zip
,但让我解释一下为什么您的代码不起作用。
如果您执行以下操作,它将起作用:
i=0
listD = []
while i < len(listA):
listD.append(listA[i]+listB[i])
i+=1
您无法分配给list[x]
在列表中创建新项目。这是用于修改现有项目的语法。要添加新项目,请使用append
。
答案 1 :(得分:3)
将zip
用于列表理解。
例如:
listA = ["A","B","C"]
listB = ["a","b","c"]
print([i+v for i,v in zip(listA, listB)])
输出:
['Aa', 'Bb', 'Cc']
答案 2 :(得分:0)
您可以使用类似这样的方法来代替使用循环。
listA = ["A","B","C"]
listB = ["a","b","c"]
[x+y for x,y in zip(listA,listB)]
# zip will output something like this [('A','a'),('B','b'),('C','c')]
答案 3 :(得分:0)
这是因为您试图在索引上分配一个不不存在的值。
Python不允许这样做。 相反,您可以尝试一下。
i=0
listD = []
while i < len(listA):
listD.append(listA[i]+listB[i])
i+=1
有任何疑问。
答案 4 :(得分:0)
HII, 您正在执行的错误是,listD是一个空列表,但是您正在使用索引进行访问,因此无法通过索引为空列表分配值
尝试一下,
listA = ["A","B","C"]
listB = ["a","b","c"]
print map(lambda x,y:x+y,listA,listB)
Result:['Aa', 'Bb', 'Cc']