【问题标题】:How to change a list of strings to integers - Python [duplicate]如何将字符串列表更改为整数 - Python [重复]
【发布时间】:2011-10-29 03:36:44
【问题描述】:

可能重复:
How to convert strings into integers in python?

我需要将字符串列表更改为整数列表我该怎么做

('1', '1', '1', '1', '2') 转化为 (1,1,1,1,2)。

【问题讨论】:

  • How to convert strings into integers in python? 的可能副本。 This one 也类似。更不用说these ones。在您提出新问题之前,请使用搜索。
  • 挑剔:那些是元组,而不是列表。
  • @Wooble:现在我的回答中涵盖了。我想从一开始就写它,但是在回答这些简单的问题时你必须要快;)

标签: python string integer


【解决方案1】:

使用list comprehensions:

strtuple = ('1', '1', '1', '1', '2')
intlist = [int(s) for s in strtuple]

为了完整性:

由于您的“列表”实际上是 tuple,即不可变列表,因此您必须使用生成器表达式和元组构造函数来获取另一个元组:

inttuple = tuple(int(s) for s in strtuple)

我所说的“生成器表达式”在没有包装在构造函数调用中时看起来像这样,并以这种方式返回生成器。

intgenerator = (int(s) for s in strtuple)

【讨论】:

  • 你是对的,谢谢。
【解决方案2】:

使用map 函数。

vals = ('1', '1', '1', '1', '2')
result = tuple(map(int, vals))
print result

输出:

(1, 1, 1, 1, 2)

与列表推导的性能比较:

from timeit import timeit
print timeit("map(int, vals)", "vals = '1', '2', '3', '4'")
print timeit("[int(s) for s in strlist]", "strlist = ('1', '1', '1', '1', '2')")

输出:

3.08675879197
4.08549801721

还有更长的列表:

print timeit("map(int, vals)", "vals = tuple(map(str, range(10000)))", number = 1000)
print timeit("[int(s) for s in strlist]", "strlist = tuple(map(str, range(10000)))", number = 1000)

输出:

6.2849350965
7.36635214811

看来,(在我的机器上)在这种情况下,map 方法比列表理解更快。

【讨论】:

  • 很高兴看到提到的地图并指出有不止一种方法。话虽如此,列表理解往往更易于阅读、更 Python 化,并且(通常存在边缘情况例外)更快。
  • @TimothyAWiseman:使用带有map 的内置函数应该比列表理解更快。所以这是一个完美的边缘案例;)
  • @TimothyAWiseman:map 在这种情况下更快。查看我的更新。
  • 没有冒犯。这个问题是用一个很小的列表提出的,所以我认为这是一个很好的代表。我将包括一个更长的列表,以减少吸吮。我不同意它们没有任何意义。这是超过一百万次迭代的总时间,所以它必须是可重复的。
  • 感谢您指出在这种情况下它更快,您的观点很好。我认为我仍然更喜欢列表理解以提高可读性,但在做出决定时使用硬数据总是好的。
【解决方案3】:

您可以使用大致如下所示的列表推导:

newList = [int(x) for x in oldList]

【讨论】:

    【解决方案4】:
    map(int, ls)
    

    ls 是您的字符串列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 2016-06-13
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多