我正在尝试将两个列表添加到一起,以便将一个列表的第一项添加到另一个列表的第一项,第二项添加到第二项,依此类推以形成新列表。
目前我有:
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()。
答案 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']