2016-06-03 2 views
0

Учитывая этот список:Не обрабатывать целые числа как строки в списке

>>> a = "123DJY65TY" 
>>> list(a) 
['1','2','3','D','J','Y','6','5','T','Y'] 

Как я могу получить список, где целые числа, не рассматриваются как строки? Как это:

[1,2,3,'D','J','Y',6,5,'T','Y'] 
+0

Посмотрите на [this] (http://stackoverflow.com/a/961661/3077939) для преобразования из строки в int. – aluriak

ответ

5

Вы можете использовать list comprehension и str.isdigit преобразовать каждый символ, цифра:

>>> a = "123DJY65TY" 
>>> [int(x) if x.isdigit() else x for x in a] 
[1, 2, 3, 'D', 'J', 'Y', 6, 5, 'T', 'Y'] 
+0

Спасибо @niemmi! –

+0

@ShreyaGaddam Добро пожаловать! – niemmi

1

Вы можете преобразовать все строки в список, содержащий только цифры таким образом, используя map() и str.isdigit() :

a = map(lambda char: int(char) if char.isdigit() else char, list(a)) 

Например:

In [3]: a = map(lambda char: int(char) if char.isdigit() else char, list(a)) 

In [4]: a 
Out[4]: [1, 2, 3, 'D', 'J', 'Y', 6, 5, 'T', 'Y'] 

Решение @niemmi с использованием списков, вероятно, является лучшим подходом, учитывая, что мы начинаем с строки, а не из списка.

+0

Зачем использовать 'map', когда у нас есть понимание списка? –

+1

Это был первый подход, который пришел на ум. Учитывая, что мы начинаем со строки, а не из списка, понимание, вероятно, является лучшим подходом. Всегда есть несколько разумных способов сделать что-то в Python :) – Will

+1

Да, [TOOWTDI] (https://wiki.python.org/moin/TOOWTDI) на самом деле не так :) –

Смежные вопросы