我需要将字符串列表更改为整数列表,如何执行此操作
即
('1','1','1','1','2')成为(1,1,1,1,2)。
答案 0 :(得分:8)
strtuple = ('1', '1', '1', '1', '2')
intlist = [int(s) for s in strtuple]
由于您的“列表”实际上是tuple,即一个不可变列表,您必须使用生成器表达式和元组构造函数来获取另一个元组:
inttuple = tuple(int(s) for s in strtuple)
我讨论的“生成器表达式”在未包含在构造函数调用中时看起来像这样,并以这种方式返回生成器。
intgenerator = (int(s) for s in strtuple)
答案 1 :(得分:2)
使用map
功能。
vals = ('1', '1', '1', '1', '2')
result = tuple(map(int, vals))
print result
输出:
(1, 1, 1, 1, 2)
与列表理解的性能比较:
from timeit import timeit
print timeit("map(int, vals)", "vals = '1', '2', '3', '4'")
print timeit("[int(s) for s in strlist]", "strlist = ('1', '1', '1', '1', '2')")
输出:
3.08675879197
4.08549801721
使用更长的列表:
print timeit("map(int, vals)", "vals = tuple(map(str, range(10000)))", number = 1000)
print timeit("[int(s) for s in strlist]", "strlist = tuple(map(str, range(10000)))", number = 1000)
输出:
6.2849350965
7.36635214811
在这种情况下,(在我的机器上)似乎map
方法比列表理解更快。
答案 2 :(得分:2)
map(int, ls)
ls
是您的字符串列表。
答案 3 :(得分:0)
你可以使用列表理解,它看起来大致如下:
newList = [int(x) for x in oldList]