【问题标题】:Split integers in a list (python)在列表中拆分整数(python)
【发布时间】:2016-01-08 16:07:10
【问题描述】:

在 python 中,我如何将[18, 8] 之类的列表变成[1, 8, 8] 之类的列表?

我已经试过了

list1 = [18, 8] 
list2 = [list1[i : i + 1] for i in range(0, len(times_two_even_even_indexes))]

但这只是给了我

list2 = [18], [8]]

【问题讨论】:

    标签: python list integer


    【解决方案1】:

    对于以下解决方案,我将添加免责声明:“不要在家做”...

    lst = [18, 8]
    map(int, sum(map(lambda x: list(str(x)), lst), [])) #[1, 8, 8]
    

    解释
    str(x)将每个整数转换为字符串,然后使用list内置函数将字符串分隔为字符列表(每个字符都是一个位)。

    sum(..., []) 将列表展平,最后一个 map(int, ...) 将每个“字符串数字”转换回整数。

    【讨论】:

      【解决方案2】:

      您可以将所有整数连接成一个字符串,然后将字符串中的每个数字/字符映射到一个整数:

      list1 = [18, 8]
      
      print(list(map(int,"".join(map(str, list1)))))
      [1, 8, 8]
      

      或者在每个 int 上使用一个 list comp 调用 str 并遍历每个 char:

       list1 = [18, 8]
      
      print([int(ch) for i in list1 for ch in str(i)])
      [1, 8, 8]
      

      【讨论】:

      • 不错!在第一个解决方案中,包装 list 是多余的。
      • @alfasin,如果使用python3,您需要在地图上调用列表
      • @alfasin,我通常总是坚持list(map..,除非问题是专门为python2标记的
      • 我完全同意:防御性编程:)
      【解决方案3】:

      这是我尝试过的最密集的形式 内部循环将列表转换为字符串,然后使用 itertools.chain 将字符串展平为字符,最后将其转换回整数

      import itertools
      list2 = [int(y) for y in list(itertools.chain(*[str(x) for x in list1]))]
      

      【讨论】:

        【解决方案4】:
        #since string is iterable convert to string,
        #chain it, and convert back to int
        
        from itertools import  chain
        
        print(list(map(int,chain.from_iterable(map(str,[18, 8])))))
        
        [1, 8, 8]
        

        【讨论】:

          【解决方案5】:

          这个怎么样?

          intlist = [18, 8]
          digitlist = [int(digit) for number in intlist for digit in str(number)]
          print digitlist
          

          这会将列表中的每个数字转换为字符串,然后将字符串中的每个字符转换回 int。通过在列表推导中使用双 for (for a in b for x in y),intlist 中的每个字符只输出一个列表项。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-01-20
            • 1970-01-01
            • 2013-02-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多