添加两个列表的字符串并将其存储在新列表中

时间:2018-10-29 07:14:47

标签: python list

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

这不好。 请告诉我为什么以及如何纠正它。非常感谢!

5 个答案:

答案 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']