如何将字符串数字转换为列表中的整数?

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 的具体人为示例。在发布我半生不熟的答案之前应该多考虑一下!

以上是关于如何将字符串数字转换为列表中的整数?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串中的多个数字转换为整数

python把一个数字列表转化为一个数字

在 R 中使用混合类型将嵌套列表中的字符数字转换为数字

如何将字符串转换为整型数?

如何将日期(“Ymd”)的输出转换为 PHP 中的数字? [复制]

如何将切片字符串中的单个字符转换为 Python 中的整数?