【发布时间】:2016-10-03 04:39:13
【问题描述】:
鉴于此列表:
>>> a = "123DJY65TY"
>>> list(a)
['1','2','3','D','J','Y','6','5','T','Y']
如何生成不将整数视为字符串的列表?像这样:
[1,2,3,'D','J','Y',6,5,'T','Y']
【问题讨论】:
-
查看this,了解从字符串到整数的转换。
鉴于此列表:
>>> a = "123DJY65TY"
>>> list(a)
['1','2','3','D','J','Y','6','5','T','Y']
如何生成不将整数视为字符串的列表?像这样:
[1,2,3,'D','J','Y',6,5,'T','Y']
【问题讨论】:
您可以使用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']
【讨论】:
您可以使用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 使用列表推导式的解决方案可能是更好的方法,因为我们从字符串而不是列表开始。
【讨论】:
map?