如何使用Python将123456789拆分为单个数字?

时间:2015-01-20 23:10:35

标签: python python-2.7 split

您如何使用Python将数字123456789拆分为[1,2,3,4,5,6,7,8,9]

4 个答案:

答案 0 :(得分:7)

一种方法是先将数字转换为字符串,然后将每个字符数字映射回整数:

>>> map(int, str(123456789))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

执行以下操作:

  • str将整数转换为字符串:'123456789'

  • map依次将函数int应用于此字符串中的每个字符,将每个字符转换回整数值。

  • 返回这些整数的列表。

答案 1 :(得分:4)

您可以将数字转换为字符串,然后执行列表推导 -

>>>[int(digit) for digit in str(123456789)]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

答案 2 :(得分:4)

您也可以在不将数字转换为字符串的情况下执行此操作:

def splitNum(n):
    if n < 10
        return [n]
    else:
        return splitNum(n // 10) + [n % 10]

此方法使用递归,但您也可以在没有递归的情况下执行此操作

def splitNum(n):
    digits = []
    while n > 0:
        digits.insert(0, n % 10) # add ones digit to front of digits
        n = n // 10
    return digits

两者都使用以下事实:

  • x // 10,由于整数除法,“切掉”数字,即1234 // 10123
  • x % 10是那个数字,即1234 % 104

答案 3 :(得分:0)

以下列方式在Python中使用内置list函数:

a = 123456789
p = str(a)
li = list(p)
s = []
for e in li:
    a = int(e)
    s.append(a)
print s    

来自文档:

list(iterable) -> new list initialized from iterable's items

编辑:

由于list()方法返回仅包含字符串元素的列表,因此我创建了一个空列表s,然后使用for循环迭代每个字符串元素,转换每个元素到整数,然后在空列表s中附加这些元素。