如何将字符串列表转换为整数 - Python

2 投票
4 回答
3471 浏览
提问于 2025-04-16 23:48

我需要把一串字符串变成一串整数,我该怎么做呢?

比如说,把这些字符串:

('1', '1', '1', '1', '2')

转换成这些整数:

(1, 1, 1, 1, 2)。

4 个回答

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
map(int, ls)

这里的 ls 是你字符串的列表。

8

使用列表推导式

strtuple = ('1', '1', '1', '1', '2')
intlist = [int(s) for s in strtuple]

补充说明:

因为你的“列表”实际上是一个元组,也就是一个不可变的列表,所以你需要用生成器表达式和元组构造器一起使用,才能得到另一个元组:

inttuple = tuple(int(s) for s in strtuple)

我提到的“生成器表达式”在没有被构造器调用包裹时,看起来是这样的,它会以这种方式返回一个生成器。

intgenerator = (int(s) for s in strtuple)

撰写回答