Добавьте два списка в Python - PullRequest
5 голосов
/ 31 октября 2011

Я пытаюсь сложить вместе два списка, чтобы первый элемент одного списка был добавлен к первому элементу другого списка, второй ко второму и т. Д., Чтобы сформировать новый список.

В настоящее время у меня есть:

def zipper(a,b):
    list = [a[i] + b[i] for i in range(len(a))]
    print 'The combined list of a and b is'
    print list

a = input("\n\nInsert a list:")
b = input("\n\nInsert another list of equal length:")

zipper(a,b)

При вводе двух списков, где один представляет собой список целых чисел, а другой - список строк, я получаю сообщение об ошибке типа «Невозможно объединить объекты str» и «int».

Я попытался преобразовать оба списка в строки, используя:

list = [str(a[i]) + str(b[i]) for i in range(len(a))]

, однако после ввода:

a = ['a','b','c','d']
b = [1,2,3,4]

Я получил вывод:

['a1', 'b2', 'c3', 'd4']

вместо того, что я хотел:

['a+1','b+2','c+3','d+4']

Есть ли у кого-нибудь какие-либо предложения относительно того, кто ячто-то не так?

NB Мне нужно написать функцию, которая по сути будет выполнять те же функции, что и zip (a, b), но мне запрещено использовать zip () в любом месте функции.

Ответы [ 2 ]

9 голосов
/ 31 октября 2011

Сначала Zip, затем добавьте (только не).

['%s+%s' % x for x in zip(a, b)]
3 голосов
/ 31 октября 2011

Что вы должны сделать

Вы должны использовать

list = [str(a[i]) +"+"+ str(b[i]) for i in range(len(a))]

вместо

list = [str(a[i]) + str(b[i]) for i in range(len(a))]

В вашемверсия, Вы никогда не говорите, что хотите получить символ плюс в выводе между двумя элементами.Это ваша ошибка.

Пример вывода:

>>> a = [1,2,3]
>>> b = ['a','b','c']
>>> list = [str(a[i]) +"+"+ str(b[i]) for i in range(len(a))]
>>> list
['1+a', '2+b', '3+c']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...