对列表每个元素调用int()函数吗?

216 投票
8 回答
363651 浏览
提问于 2025-04-16 02:03

我有一个包含数字字符串的列表,像这样:

numbers = ['1', '5', '10', '8'];

我想把列表里的每个元素都转换成整数,这样看起来会是这样的:

numbers = [1, 5, 10, 8];

我可以用一个循环来做到这一点,像这样:

new_numbers = [];
for n in numbers:
    new_numbers.append(int(n));
numbers = new_numbers;

这样写是不是太麻烦了?我相信有更简洁的方式可以用一行代码完成这个操作。请帮帮我。

8 个回答

28

只是提个观点,

numbers = [int(x) for x in numbers]

列表推导式看起来更自然,而

numbers = map(int, numbers)

则更快。

不过在大多数情况下,这可能没什么太大关系。

有用的阅读资料:列表推导式和map的比较

160

在Python 2.x中,另一种方法是使用 map 函数:

numbers = map(int, numbers)

注意:在Python 3.x中, map 返回的是一个映射对象,如果你想的话,可以把它转换成一个列表:

numbers = list(map(int, numbers))
408

这就是列表推导式的用途:

numbers = [ int(x) for x in numbers ]

撰写回答