【问题标题】:Not treating integers as strings in a list [duplicate]不将整数视为列表中的字符串[重复]
【发布时间】: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,了解从字符串到整数的转换。

标签: python list


【解决方案1】:

您可以使用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']

【讨论】:

  • 谢谢@niemmi!
  • @ShreyaGaddam 不客气!
【解决方案2】:

您可以使用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
  • 这只是我想到的第一个方法。鉴于我们从字符串而不是列表开始,理解可能是更好的方法。在 Python 中总有一些合理的方法可以做某事:)
  • 是的,TOOWTDI 不是真的 :)
  • 非常感谢大家!
  • 对! :) 不过仍然胜过 Perl。
猜你喜欢
  • 2012-05-08
  • 2021-04-05
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多