将数字除以数字并使用python将它们保存在列表(数组)中

Tem*_*lar 2 python arrays numbers list digits

我想将数字分成数字并将它们保存在python中的列表(或数组)中.首先我应该创建列表

dig = [0 for i in range(10)]
Run Code Online (Sandbox Code Playgroud)

然后

i = 0
while num > 9:
    dig[i] = num % 10
    i += 1
    num /= 10
dig[i] = num
Run Code Online (Sandbox Code Playgroud)

但我真的不喜欢只为10个空格创建列表,是否可以在不重复循环的情况下获得数字长度

i = 0
num2 = num
while num2 > 9:
    num2 /= 10
    i += 1
i += 1
Run Code Online (Sandbox Code Playgroud)

然后重复第一部分代码?或者只是按照我的第一名制作?我不知道确切的数字长度,但不会很长

所以任何建议?也许你知道更好的方法将数字分成数字,或者其他东西.

agf*_*agf 10

由于您只是按顺序添加从最小到最大的数字,只需使用空列表:

dig = []
i = 0
while num > 9:
    dig.append(num % 10)
    i += 1
    num /= 10
dig.append(num)
Run Code Online (Sandbox Code Playgroud)

或者,就这样做

dig = list(int(d) for d in str(num))
Run Code Online (Sandbox Code Playgroud)

这将转即123'123',然后把每个数字回了一些,并把它们放入一个列表,从而导致[1, 2, 3].

如果您希望它与版本的顺序相同,请使用

dig = reversed(int(d) for d in str(num))
Run Code Online (Sandbox Code Playgroud)

如果你真的只想得到一个数字的长度,最简单的做法len(str(num))是把它变成一个字符串然后得到长度.


Lau*_*low 5

假设num是一个正整数,则位数等于int(math.log10(num) + 1).

但比这更是只使用append的方法list-那么你就不必知道长度提前.

更容易(虽然列表将以相反的顺序):

dig = [int(x) for x in str(num)]
Run Code Online (Sandbox Code Playgroud)

要么

dig = map(int, str(num))
Run Code Online (Sandbox Code Playgroud)