【问题标题】:How to split up 123456789 into individual numbers using Python? [duplicate]如何使用 Python 将 123456789 拆分为单独的数字? [复制]
【发布时间】:2015-01-20 23:10:35
【问题描述】:

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

【问题讨论】:

    标签: python python-2.7 split


    【解决方案1】:

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

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

    执行以下操作:

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

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

    • 返回这些整数的列表。

    【讨论】:

    • 使用您的方法时,我收到一条错误消息“TypeError: 'str' object in not callable”
    • 嗯...听起来您可能在某个阶段覆盖了内置函数。你有没有写过将任何函数分配给字符串,例如int = 'number'?
    • @ajcr 似乎他更可能重新分配了str。 phighter 可以通过打印出来检查:print(str) 应该给 <type 'str'> 和 print(int) 应该给 <type 'int'>。
    • @jpmc26 我试过了,我给了我 和 isthat normal
    • @phighter 您必须使用 Python 3.x,即使您的问题被标记为 python-2.7。你是在你得到错误的同一个地方做的吗?这也对这个答案有影响,因为map 似乎在 Python 3.x 中返回了一个生成器
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你也可以不把你的号码变成这样的字符串:

      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 // 10 是123
      • x % 10 是那个数字,即1234 % 10 是4

      【讨论】:

      • 注意:这只适用于没有 from __future__ import division。如果已启用,则需要使用 // 运算符进行整数截断。
      • 道歉。忘记了 Python 3.x,它也适用。有趣的是,从其他 cmets 来看,3.x 似乎正是 OP 正在使用的。
      【解决方案4】:

      使用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中。

      【讨论】:

      • 如果 OP 想要int 的列表怎么办?
      猜你喜欢
      • 2020-02-08
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 2021-03-11
      • 2011-07-08
      • 2010-10-01
      • 2013-11-30
      • 1970-01-01
      相关资源
      最近更新 更多