关于如何追加字符串:如何追加字符串 – Python

How to append string - Python

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

例如,[1,2,3,4,5,6]将返回'123456'

这是我已经尝试过的代码,但它给了我一个错误"列表索引必须是整数,而不是str"

1
2
3
4
5
6
7
8
9
10
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)
1
2
3
4
5
6
a = [1,2,3,4,5,6,7,8,9,10]

def to_str(a):

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

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


不要重新发明轮子:

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

代码中的问题是,python中的for循环实际上是针对每个循环的。因此,当你有类似于for i in a的东西时,i承担a的所有元素,而不是a的指数。

因此,您的循环实际上在一次迭代中工作良好,并且您成功地将列表中的一个元素设置为一个字符串(特别是索引1处的元素,因为这是i的第一个值)。但是,下一个i将引用这个新的字符串元素,因此在执行a[i]时会导致错误。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
+-----+-----+-----+
|  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.

参考

  • 江户十一〔11〕。
  • 埃多克斯1〔12〕


这个应该有效:

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

官方文件为加入。在阅读了发电机的说明后,你应该对它的功率有一种感觉:—)


你可以用连接和列表理解来完成它。

1
''.join([str(_) for _ in a])

更好(谢谢Chepner)

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


it gives me the error"list indices must be integers, not str"

发生原因

1
for i in a:

迭代a中的元素。第一次通过循环时,i1的值,所以它是这样做的。

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

a改为

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

然后,下一次通过循环i得到a[1],它现在是字符串'2',并尝试

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

它失败了,因为您不能用字符串索引一个python列表。

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

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