Каков самый простой способ конвертировать список с str
в список с int
в Python?
Например, мы должны преобразовать ['1', '2', '3']
в [1, 2, 3]
. Конечно, мы можем использовать цикл for
, но это слишком просто.
Каков самый простой способ конвертировать список с str в список с int?
Ответ 1
Python 2.x:
map(int, ["1", "2", "3"])
Python 3.x(в 3.x, map
возвращает итератор, а не список, как в 2.x):
list(map(int, ["1", "2", "3"]))
Ответ 2
[int(i) for i in str_list]
Ответ 3
Вы также можете использовать списки:
new = [int(i) for i in old]
Или встроенная функция map()
:
new = map(int, old)
Или функция itertools.imap()
, которая в некоторых случаях обеспечит ускорение, но в этом случае просто выплюнет итератор, который вам нужно будет преобразовать в список (так что, вероятно, потребуется столько же времени)
import itertools as it
new = list(it.imap(int, old))
Ответ 4
Если ваши строки - это не только числа (например, u ''), вы можете использовать:
new = [int(i) for i in ["1", "2", "3"] if isinstance(i, int) or isinstance(i, (str, unicode)) and i.isnumeric()]
Ответ 5
Если это массив и установлен numpy. Мы также можем использовать код ниже.
import numpy as np
np.array(['1', '2', '3'],dtype=int)