【问题标题】:combine list of lists in python (similar to string.join but as a list comprehension?) [duplicate]在python中组合列表列表(类似于string.join但作为列表理解?)[重复]
【发布时间】:2013-12-20 03:55:50
【问题描述】:

如果您有一长串 [['A',1,2],['B',3,4]] 格式的列表,并且您想将其合并到 ['A, 1, 2', 'B, 3, 4'] 中,是否有一种简单的列表理解方法可以做到这一点?

我是这样做的:

this_list = [['A',1,2],['B',3,4]]
final = list()
for x in this_list:
     final.append(', '.join([str(x) for x in x]))

但这是否可以作为单行来完成?

感谢您的回答。我喜欢基于 map() 的。我有一个后续问题 - 如果子列表不是 ['A',0.111,0.123456] 格式,是否可以在列表理解中包含一个字符串格式化部分来截断,例如退出 'A, 0.1, 0.12'

再一次用我丑陋的代码,它会是这样的:

this_list = [['A',0.111,0.12345],['B',0.1,0.2]]
final = list()
for x in this_list:
    x = '{}, {:.1f}, {:.2f}'.format(x[0], x[1], x[2])
    final.append(x)

我解决了自己的问题:

values = ['{}, {:.2f}, {:.3f}'.format(c,i,f) for c,i,f in values]

【问题讨论】:

  • @mgilson 这不是一个平面列表。
  • @AshwiniChaudhary -- 我很困惑。 OP 有一个列表列表,并且想要一个平面列表。没有?
  • 不,在他的例子中是 2 个字符串
  • 哦,原来如此。好的,把脚从嘴里移开(手指?)

标签: python list


【解决方案1】:
>>> lis = [['A',1,2],['B',3,4]]
>>> [', '.join(map(str, x)) for x in lis ]
['A, 1, 2', 'B, 3, 4']

【讨论】:

    【解决方案2】:

    您可以使用嵌套的list comprehensionsstr.join

    >>> lst = [['A',1,2],['B',3,4]]
    >>> [", ".join([str(y) for y in x]) for x in lst]
    ['A, 1, 2', 'B, 3, 4']
    >>>
    

    【讨论】:

    • @alko 实际上对于大型列表,建议使用它们。但是对于小列表,是的,它们可以被删除。
    • @alko - 是的。这是reference
    • 自己刚刚找到主题。我不知道加入的 2 遍行为,谢谢 @AshwiniChaudhary 和 @iCodez!
    【解决方案3】:
    li = [['A',1,2],['B',3,4],['A',0.111,0.123456]]
    
    print    [', '.join(map(str,sli)) for sli in li]
    
    
    def func(x):
        try:
            return str(int(str(x)))
        except:
            try:
                return '%.2f' % float(str(x))
            except:
                return str(x)
    
    print map(lambda subli: ', '.join(map(func,subli)) , li)
    

    返回

    ['A, 1, 2', 'B, 3, 4', 'A, 0.111, 0.123456']
    ['A, 1, 2', 'B, 3, 4', 'A, 0.11, 0.12']
    

    【讨论】:

      猜你喜欢
      • 2017-11-28
      • 1970-01-01
      • 2013-01-26
      • 2017-09-04
      • 2016-11-08
      • 2019-08-13
      • 2011-06-15
      • 2017-09-05
      • 1970-01-01
      相关资源
      最近更新 更多