我有一个包含数字字符串的列表,如下所示:

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

我想把每个列表元素都转换成整数,所以它看起来像这样:

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

我可以用循环来做,像这样:

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

非得这么难看吗?我相信有一种更python化的方法可以在一行代码中实现这一点。请帮帮我。


当前回答

在Python 3中另一种方法是:

数字= [*map(int, Numbers)]

然而,理想情况下,你可能只满意map,因为它返回一个迭代器:

Numbers = map(int, Numbers)

其他回答

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

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

可能还值得注意的是,NumPy在创建数组时会动态地执行此操作:

import numpy as np

numbers = ['1', '5', '10', '8']
numbers = np.array(numbers,
                   dtype=int)
numbers
array([ 1,  5, 10,  8])

在Python 2中。X另一种方法是使用map:

numbers = map(int, numbers)

注意:在Python 3中。X map返回一个映射对象,你可以转换为一个列表,如果你想:

numbers = list(map(int, numbers))

另一种方式,

for i, v in enumerate(numbers): numbers[i] = int(v)

在Python 3中另一种方法是:

数字= [*map(int, Numbers)]

然而,理想情况下,你可能只满意map,因为它返回一个迭代器:

Numbers = map(int, Numbers)