在Python中添加两个列表

时间:2011-10-31 00:34:41

标签: python string list int

我正在尝试将两个列表添加到一起,以便将一个列表的第一项添加到另一个列表的第一项,第二项添加到第二项,依此类推以形成新列表。

目前我有:

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)

输入两个列表,其中一个是整数列表,一个是字符串列表,我得到类型错误'不能cocanenate'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']

有没有人对我做错了什么有任何建议?

N.B。我必须编写一个与zip(a,b)基本相同的函数,但我不允许在函数的任何地方使用zip()。

2 个答案:

答案 0 :(得分:9)

首先拉链,然后添加(仅限不)。

['%s+%s' % x for x in zip(a, b)]

答案 1 :(得分:3)

你应该做什么

你应该使用

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