【问题标题】:Add two lists in Python在 Python 中添加两个列表
【发布时间】:2011-12-18 10:26:47
【问题描述】:

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

目前我有:

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)

在输入两个列表时,其中一个是整数列表,另一个是字符串列表,我得到类型错误'Can not cocanenate 'str' and 'int' objects。

我尝试使用以下方法将两个列表都转换为字符串:

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

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

注意我必须编写一个基本上与 zip(a,b) 执行相同的函数,但我不允许在函数中的任何地方使用 zip()。

【问题讨论】:

    标签: python string list int


    【解决方案1】:

    先压缩,然后添加(只有不)。

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

    【讨论】:

    • 对不起,我应该提到,我必须编写一个与 zip(a,b) 基本上执行相同的函数,但我不允许在函数中的任何地方使用 zip()。
    • 然后调整你已有的并使用它来代替zip()
    【解决方案2】:

    你应该怎么做

    你应该使用

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

    【讨论】:

    • 我仍然得到相同的 'cannot cocatenate 'str' 和 'int' 对象。'
    • @GeorgeBurrows 你是怎么得到那个 ['a1','b2','c3','d4'] 没有错误的,你的详细信息可以吗?
    • 通过使用:list = [str(a[i]) + str(b[i]) for i in range(len(a))]
    • @GeorgeBurrows 我刚刚在 python 日志中输入的内容与我给你的那行完全相同?
    猜你喜欢
    • 1970-01-01
    • 2022-07-24
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    相关资源
    最近更新 更多