使用python将数字分成数字并保存在列表(数组)中

2024-06-15 11:25:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把数字分成几个数字,然后用python将它们保存在list(或array)中。所以首先我应该创建如下列表

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

然后重复代码的第一部分?还是像我当初做的那样?我不知道数字的确切长度,但不会很长

有什么建议吗?也许你知道更好的方法把数字分成数字,或者别的什么。


Tags: 方法代码in列表forrange数字array
3条回答

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

但最好的方法是使用appendlist方法,这样就不必事先知道长度。

更简单(尽管列表将按相反的顺序排列):

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

或者

dig = map(int, str(num))

因为您只是按顺序从最小到最大添加数字,所以请使用空列表:

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))将它转换成一个字符串,然后得到长度。

尽管人们常说map不通俗,但这项任务绝对是为了它:

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

相关问题 更多 >