【问题标题】:How to split a list that has ONLY ONE integer value in Python? [duplicate]如何在 Python 中拆分只有一个整数值的列表? [复制]
【发布时间】:2019-07-18 10:27:04
【问题描述】:

我想将列表中的一个值拆分为两个值。

arr = [10]

数组应该变成:

arr = [1,0]

【问题讨论】:

  • 不一样,因为它不在字符串中,我应该在没有内置函数的情况下解决这个问题

标签: python list split arr


【解决方案1】:

可以通过map、list、转字符串、列表推导来解决。

如果您的列表只有一个值。

Python 2

arr = [10]
arr = map(int,str(arr[0]))

Python 3

arr = [10]
arr = list(map(int, str(arr[0])))

适用于 python 2 和 3

arr = [10]
arr_str=list(str(arr[0]))
arr = [int(x) for x in arr_str]

一个班轮

arr = [10]
arr = [int(x) for x in list(str(arr[0]))]

【讨论】:

    【解决方案2】:

    您可以使用列表推导:

    [int(digit) for digit in str(arr[0])]
    

    list(map()):

    list(map(int, str(arr[0])))
    

    对于最有效的解决方案,不要转换为字符串;相反,使用基本的数学运算:

    import math
    
    [arr[0] // 10 ** n % 10 for n in reversed(range(int(math.log10(arr[0])) + 1))]
    

    【讨论】:

      【解决方案3】:

      您可以使用while 循环将给定整数除以 10 并产生余数,直到商变为 0,然后将结果列表反转以获得所需的列表:

      def split_int(i):
          while True:
              i, r = divmod(i, 10)
              yield r
              if not i:
                  break
      

      这样list(split_int(arr[0]))[::-1] 返回:

      [1, 0]
      

      【讨论】:

        【解决方案4】:

        使用两次迭代的列表推导:

        >>> [int(x) if x.isdigit() else x for y in arr for x in str(y)]
        [1, 0]
        >>> 
        

        【讨论】:

          【解决方案5】:

          为了像这样分割一个整数,你可以使用str() 将整数分解成各个部分。

          您只需要对变量而不是列表执行此操作。 所以

          num = arr[0]

          然后把它变成一个字符串

          string = str(num)

          你可以用list()把它变成一个列表

          然后您将使用int() 将多个字符串转换回数字

          所以大家一起来:

          >>> arr = [10]
          >>> num = arr[0]
          >>> string = str(num)
          >>> string_arr = list(string)
          >>> arr = list(map(int, string_arr))
          >>> arr
          [1,0]
          

          或者简化下来而不是使用中间变量。

          >>> arr = [10]
          >>> arr = list(map(int, str(arr[0])))
          >>> arr
          [1,0]
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-01-08
            • 2018-10-02
            • 1970-01-01
            • 2021-12-22
            • 2014-01-29
            • 1970-01-01
            • 1970-01-01
            • 2021-11-08
            相关资源
            最近更新 更多