Преобразование строки в целое с помощью map()

В следующем примере я пытаюсь преобразовать первый список в целочисленный список, используя функцию карты, как я могу достичь этого

T1 = ['13', '17', '18', '21', '32']
print T1
T3=[map(int, x) for x in T1]
print T3
[[1, 3], [1, 7], [1, 8], [2, 1], [3, 2]]

Expected is:

T3=[13,17,18,21,32] 

Ответ 1

>>> T1 = ['13', '17', '18', '21', '32']
>>> T3 = map(int, T1)
>>> T3
[13, 17, 18, 21, 32]

Это делает то же самое, что:

>>> T3 = [int(x) for x in T1]
>>> T3
[13, 17, 18, 21, 32]

так что вы делаете

>>> T3 = [[int(letter) for letter in x] for x in T1]
>>> T3
[[1, 3], [1, 7], [1, 8], [2, 1], [3, 2]]

Надеюсь, что это устранит путаницу.

Ответ 2

>>> T1 = ['13', '17', '18', '21', '32']
>>> print [int(x) for x in T1]
[13, 17, 18, 21, 32]

Вам не нужна карта внутри вашего понимания списка. Карта создает другой список, поэтому вы получите список списка.

Предостережение: это будет работать, если строки будут присвоены номерам, в противном случае это вызовет исключение.

Ответ 3

1. Во-первых, функция map - это map (func, iterable) 2. Посмотрите на этот пример:

T1=['13','17','18','21','32']
T3=[map(int, x) for x in T1]
print T3
[[1, 3], [1, 7], [1, 8], [2, 1], [3, 2]]

когда выбираем x out, например, '13', это последовательность, поэтому map (int, '13 ') возвращает [1,3], поэтому итерируемое в map (func, iterable) является строкой.

3. посмотрите этот пример:

T1 = ['13', '17', '18', '21', '32']
>>>list(map(int,T1))

итерируемый объект в функции карты - list.so 'int' работает с '13' как 13

Ответ 4

Вы можете сделать это так:

>>>T1 = ['13', '17', '18', '21', '32']
>>>list(map(int,T1))