将单个数字转换为单个数字Python

use*_*242 21 python numbers list

我想把一个数字,例如43365644变成单个数字[4,3,3 ....,4,4]

并将其附加到列表中

iCo*_*dez 52

如果你这样做,这很容易做到:

  1. 使用str将数字转换成字符串,这样就可以在它迭代.

  2. 使用列表推导将字符串拆分为单个数字.

  3. 使用int到数字转换回整数.

以下是演示:

>>> n = 43365644
>>> [int(d) for d in str(n)]
[4, 3, 3, 6, 5, 6, 4, 4]
>>>
Run Code Online (Sandbox Code Playgroud)

  • 这在负整数的情况下无效。 (4认同)

ins*_*get 11

这是一种方法,无需先将其转换为字符串(基于一些基本的基准测试,这大约是字符串化的两倍n):

>>> n = 43365644
>>> [(n//(10**i))%10 for i in range(math.ceil(math.log(n, 10))-1, -1, -1)]
[4, 3, 3, 6, 5, 6, 4, 4]
Run Code Online (Sandbox Code Playgroud)

  • 这基本上也是 `str` 函数在内部必须做的事情,它不仅仅是神奇地具有字符串表示形式。当然,内置的 `str` 函数是用 C 编写的,因此比 Python 代码快,但我很确定数字必须变得非常大,因为它比解析字符串慢,因为 Python 解释器可以优化列表理解。此外,如果您真的不需要列表,您可以将其用作迭代器,进一步提高性能,而 `str` 函数将始终一次构建完整的字符串。 (2认同)
  • 对于10的幂,此答案给出的结果不正确。例如,当n == 100时,它返回“ [0,0]”。 (2认同)
  • 这个答案怎么可能得到这么多点赞!?对于集合 {1, 10,100, 1000, etc} 中的任何输入,这都会给出错误的结果。 (2认同)

Sla*_*off 7

如果你想将你的数字更改为这些数字的列表,我会首先将其转换为 a string,然后将其转换为列表自然会在每个字符上中断:

[int(x) for x in str(n)]
Run Code Online (Sandbox Code Playgroud)


Max*_*ant 5

最简单的方法是将int转换为字符串,并将字符串的每个字符作为列表的元素:

>>> n = 43365644 
>>> digits = [int(x) for x in str(n)]
>>> digits
[4, 3, 3, 6, 5, 6, 4, 4]
>>> lst.extend(digits)  # use the extends method if you want to add the list to another
Run Code Online (Sandbox Code Playgroud)

它涉及一些铸造操作,但如果您不需要极端性能,它是可读的和可接受的.