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

时间:2011-08-18 10:55:42

标签: python arrays list numbers digits

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

这样的列表
dig = [0 for i in range(10)]

然后

i = 0
while num > 9:
    dig[i] = num % 10
    i += 1
    num /= 10
dig[i] = num

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

i = 0
num2 = num
while num2 > 9:
    num2 /= 10
    i += 1
i += 1

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

那么有什么建议吗?也许你知道更好的方法将数字分成数字,或者其他东西。

3 个答案:

答案 0 :(得分:10)

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

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

或者,只需做

dig = list(int(d) for d in str(num))

123转换为'123',然后将每个数字转回一个数字并将其放入列表中,结果为[1, 2, 3]

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

dig = reversed(int(d) for d in str(num))

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

答案 1 :(得分:5)

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

但更好的是只使用append的{​​{1}}方法 - 那么您不必事先知道长度。

更容易(尽管列表的顺序相反):

list

dig = [int(x) for x in str(num)]

答案 2 :(得分:2)

虽然map通常被认为是单声道的,但这个任务肯定是为了它:

>>> d = 123456
>>> map(int, str(d))
[1, 2, 3, 4, 5, 6]