【问题标题】:Split integer if double digit如果是两位数则拆分整数
【发布时间】:2013-12-16 00:34:40
【问题描述】:

我有一个整数列表:

l1 = [8, 2, 2, 6, 10, 14, 18, 2]

如何测试个位数?如果不是个位数,则拆分为个位数

for i in l1:
    if len(i) > 1:
        something

所以新列表是:

l1 = [8, 2, 2, 6, 1, 0, 1, 4, 1, 8, 2]

【问题讨论】:

    标签: list python-2.7 int


    【解决方案1】:

    你可以使用字符串:

    list(''.join(map(str, l1)))
    

    它将数字转换为字符串,将它们全部连接起来,然后得到一个字符列表。

    >>> l1 = [8, 2, 2, 6, 10, 14, 18, 2]
    >>> list(''.join(map(str, l1)))
    ['8', '2', '2', '6', '1', '0', '1', '4', '1', '8', '2']
    

    【讨论】:

      【解决方案2】:

      也许是一个生成器:

      def split_digits(numbers):
          for number in numbers:
              for digit in str(number):
                  yield int(digit)
      
      print list(split_digits([8, 2, 2, 6, 10, 14, 18, 2]))
      

      【讨论】:

        【解决方案3】:

        您可以将每个元素转换为字符串,然后添加每个字符

        l1 = [8, 2, 2, 6, 10, 14, 18, 2]
        l2 = []
        
        for i in l1:
            s = str(i)
        
            for digit in s:
                l2.append(int(digit))
        

        【讨论】:

          【解决方案4】:

          如果不使用字符串,像这样的东西呢:

          def convert(my_list):
              new_list = []
              for ele in my_list:
                  new_list.extend(split(ele))
              return new_list
          
          def split(x):
              if x == 0:
                  return [0]
              result = []
              while x:
                  result.append(x % 10)
              x /= 10
          return result[::-1]
          

          结果:

          >>> convert(l1)
          [8, 2, 2, 6, 1, 0, 1, 4, 1, 8, 2]
          >>> convert([133, 34, 0, 44])
          [1, 3, 3, 3, 4, 0, 4, 4]
          

          【讨论】:

            【解决方案5】:
            for i, num in enumerate(nums):
                nums[i:i+1] = [int(d) for d in str(num)]
            

            【讨论】:

              猜你喜欢
              • 2012-09-14
              • 1970-01-01
              • 2021-07-29
              • 1970-01-01
              • 2016-02-09
              • 2018-01-06
              • 1970-01-01
              • 1970-01-01
              • 2013-09-18
              相关资源
              最近更新 更多