如何追加字符串 - Python

时间:2013-09-20 14:07:25

标签: python python-2.7

我正在尝试编写一个接受数组的函数,将其转换为字符串,然后将其附加在一起。

实施例。 [1,2,3,4,5,6]将返回'123456'

这是我已经尝试过的代码,但它给出了错误“list indices必须是整数,而不是str”

a = [1,2,3,4,5,6,7,8,9,10]

def add_it_up(a,b):
    return a+b

def to_str(a):
    for i in a:
        a[i] = str(a[i])

    reduce(add_it_up, a)

a = [1,2,3,4,5,6,7,8,9,10]

def to_str(a):

    ''.join(map(str, l))
    return a

上面的代码有什么问题?它只是返回原始值。

4 个答案:

答案 0 :(得分:10)

不要重新发明轮子:

>>> l = [1,2,3,4,5,6]
>>> 
>>> ''.join(map(str, l))
'123456'

代码中的问题是Python中的for循环实际上是for-each循环。因此,当您有for i in a之类的内容时,i会占用a的所有元素,而不是a的索引。

因此,你的循环实际上在一次迭代中工作正常,并且你成功地将列表的元素设置为字符串(具体地,索引为1的元素),因为它是{的第一个值{ {1}})。 但是,下一个i将引用此新字符串元素,因此当您执行i时会导致错误。

这是一个有趣的现象,所以让我们看一下简化列表a[i],它是a = [1,2,3]的子列表,足以看出错误发生的位置和原因位:

+-----+-----+-----+
|  1  |  2  |  3  |
+-----+-----+-----+
   ^
   i (loop starts, i takes on first value of list: 1)

+-----+-----+-----+
|  1  | '2' |  3  |
+-----+-----+-----+
   ^
   i (we set element at index i (a[1]) to str(a[1]), which is '2')

+-----+-----+-----+
|  1  | '2' |  3  |
+-----+-----+-----+
         ^ 
         i (next iteration, i takes on second value: '2')

Error occurs with a[i], list indices must be integers.

<强>参考

答案 1 :(得分:1)

您可以使用joinlist comprehensions

完成此操作
''.join([str(_) for _ in a])

更好(谢谢chepner)

''.join(str(_) for _ in a)

答案 2 :(得分:1)

这个应该有效:

>>> t =[1,2]
>>> s=[3,4]
>>> ''.join(str(a) for a in t + s)
'1234'
>>>

官方文档提供了一个很好的解释 join。 阅读the generators explanation之后,您应该感受到它的力量: - )

答案 3 :(得分:0)

  

它给了我错误“列表索引必须是整数,而不是str”

是因为

for i in a:

遍历a中的元素。第一次循环,i取值1,因此它

a[1] = str(a[1])

a更改为

[1,"2",3,4,...]

然后下一次循环i获取a[1],现在是字符串'2',然后尝试

a["2"] = str(a["2"])

失败,因为您无法使用字符串索引Python列表。


其他人已经解释了如何解决您的特定问题,但一般来说,要迭代列表的索引,请尝试

for i in xrange(0, len(a)):
  ...