【问题标题】:Is it pythonic to make two type conversions as in list(str(my_integer))?像在 list(str(my_integer)) 中那样进行两次类型转换是 pythonic 吗?
【发布时间】:2019-01-25 13:52:56
【问题描述】:

我想转换一个整数,比如说

my_integer=1412323

到一个字符列表

['1','4',...]

我能想到的最快的方法是

list(str(my_integer))

这样做有什么蟒蛇反对意见吗?

【问题讨论】:

  • 对我来说看起来不错...但这实际上取决于您打算如何使用 list
  • 如果您需要列表的唯一原因是为了迭代,那么 str 值本身已经是由单个字符组成的可迭代对象。
  • 是 - here's why

标签: python


【解决方案1】:

是的,这是一个非常好的方法!如果您只需要遍历字符串的每个字符,尽管您不需要转换为list,因为str 是可迭代的。所以你可以这样做:

for num in str(my_integer):
    print(num)

【讨论】:

  • 我想迭代它,但我只想到字符串的一半,然后我也想倒退,我想不出对 str 的列表理解这样做。
【解决方案2】:

它确实非常pythonic,而且速度非常快。让我们将其与另一种方法进行比较。将其与列表推导(也被认为是 Pythonic)进行比较:

%%timeit
[x for x in str(my_integer)]

每个循环 883 ns ± 32.8 ns(7 次运行的平均值 ± 标准偏差,每次 1000000 次循环)

根据你的建议,我们得到:

%%timeit
list(str(my_integer))

每个循环 743 ns ± 33.2 ns(平均值 ± 标准偏差。7 次运行,每次 1000000 次循环)

作为一般准则,我会说pythonic 方式在大多数情况下是简洁且无循环的。如果您想确定,可以使用 %%timeit 和其他“经典”方法对其进行基准测试。

【讨论】:

    猜你喜欢
    • 2012-02-09
    • 2023-01-19
    • 1970-01-01
    • 2021-12-30
    • 2021-05-08
    • 2019-01-13
    • 1970-01-01
    • 2021-06-04
    • 2020-10-21
    相关资源
    最近更新 更多