Добавляем строку из двух списков и сохраняем ее в новом списке - PullRequest
0 голосов
/ 29 октября 2018
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 голосов
/ 29 октября 2018

HII, что вы делаете, так это то, что listD является пустым списком, но вы обращаетесь с индексом, поэтому невозможно присвоить значение по индексу для пустого списка

Попробуйте это,

listA = ["A","B","C"]
listB = ["a","b","c"]
print map(lambda x,y:x+y,listA,listB)

Result:['Aa', 'Bb', 'Cc']
0 голосов
/ 29 октября 2018

Это потому, что вы пытаетесь присвоить значение для индекса , которого не существует .

Python не позволяет этого. Вместо этого вы можете попробовать это.

i=0
listD = []
while i < len(listA):
    listD.append(listA[i]+listB[i])
    i+=1

Комментарий для любых сомнений.

0 голосов
/ 29 октября 2018

Вы можете использовать zip, как предложил @Rakesh, но позвольте мне объяснить, почему ваш код не работает.

Это сработало бы, если бы вы сделали следующее:

i=0
listD = []
while i < len(listA):
        listD.append(listA[i]+listB[i])
        i+=1

Вы не можете назначить list[x] для создания нового элемента в списке. Это синтаксис для изменения существующих элементов. Чтобы добавить новые предметы, используйте append.

0 голосов
/ 29 октября 2018

Вместо использования цикла вы можете использовать что-то вроде этого.

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')]
0 голосов
/ 29 октября 2018

Используйте zip со списком.

Ex:

listA = ["A","B","C"]
listB = ["a","b","c"]

print([i+v for i,v in zip(listA, listB)])

Выход:

['Aa', 'Bb', 'Cc']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...