如何将字符串数字转换为列表中的整数?
Posted
技术标签:
【中文标题】如何将字符串数字转换为列表中的整数?【英文标题】:How to convert strings numbers to integers in a list? 【发布时间】:2010-10-23 13:37:28 【问题描述】:我有一个清单说:
['batting average', '306', 'ERA', '1710']
如何在不接触字符串的情况下转换预期的数字?
感谢您的帮助。
【问题讨论】:
【参考方案1】:changed_list = [int(f) if f.isdigit() else f for f in original_list]
【讨论】:
优雅的单线。看看列表推导的威力。 正在考虑类似的思路 很好的解决方案但是如果列表也有浮点值怎么办['batting average', '306', 'ERA', '1710.5']
@d.putto 为您的问题添加了答案【参考方案2】:
数据看起来像是你会知道数字应该在哪些位置。在这种情况下,最好明确地转换这些位置的数据,而不是仅仅转换任何看起来像数字的东西:
ls = ['batting average', '306', 'ERA', '1710']
ls[1] = int(ls[1])
ls[3] = int(ls[3])
【讨论】:
是的,这是静态情况下的最佳解决方案,而 Alex 最适合动态情况。【参考方案3】:试试这个:
def convert( someList ):
for item in someList:
try:
yield int(item)
except ValueError:
yield item
newList= list( convert( oldList ) )
【讨论】:
【参考方案4】:a= ['batting average', '306', 'ERA', '1710.5']
[f if sum([c.isalpha() for c in f]) else float(f) for f in a ]
如果您的列表包含浮点数、字符串和整数(正如评论中 @d.putto 所指出的那样)
【讨论】:
sum([c.isalpha() for c in f])
是检查“f 中的任何字符是否为字母”的次优方法 - 尝试any(c.isalpha() for c in f)
以提高可读性和性能。当然,如果f
等于例如'!'
——一个不是数字但没有字母数字字符的字符串——并且也无法转换例如'1.7e3'
——一个包含字母数字字符但尽管如此,作为参数传递给float
(“指数表示法”)是完全可以的。
真的。好点...发布它只是为了回答 d.putto 的具体人为示例。在发布我半生不熟的答案之前应该多考虑一下!以上是关于如何将字符串数字转换为列表中的整数?的主要内容,如果未能解决你的问题,请参考以下文章