不将整数视为列表中的字符串

时间:2016-06-03 07:50:01

标签: python list

鉴于此清单:

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

如何生成不将整数视为字符串的列表?像这样:

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

2 个答案:

答案 0 :(得分:5)

您可以使用list comprehensionstr.isdigit转换每个字符数字:

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

答案 1 :(得分: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使用列表推导的解决方案可能是一种更好的方法,因为我们从字符串开始,而不是列表。