How to append string - Python
我正在尝试编写一个函数,它接受一个数组,将其转换为一个字符串,然后将其附加在一起。
例如,
这是我已经尝试过的代码,但它给了我一个错误"列表索引必须是整数,而不是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中的
因此,您的循环实际上在一次迭代中工作良好,并且您成功地将列表中的一个元素设置为一个字符串(特别是索引
这是一个有趣的现象,所以让我们用简化的列表
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: |
。
迭代
1 | a[1] = str(a[1]) |
。
将
1 | [1,"2",3,4,...] |
然后,下一次通过循环
1 | a["2"] = str(a["2"]) |
。
它失败了,因为您不能用字符串索引一个python列表。
其他人已经解释了如何解决您的特定问题,但一般来说,要遍历列表的索引,请尝试
1 2 | for i in xrange(0, len(a)): ... |