我想将数字分成数字并将它们保存在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
然后重复第一部分代码?或者只是按照我的第一名制作?我不知道确切的数字长度,但不会很长
那么有什么建议吗?也许你知道更好的方法将数字分成数字,或者其他东西。
答案 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]