代码之家  ›  专栏  ›  技术社区  ›  Arvinth Kumar

需要帮助在列表的每个值之间插入值

  •  1
  • Arvinth Kumar  · 技术社区  · 8 年前

    我有一份清单 column_names 具有以下值

     column_names = ['Large Cap', 'Mid Cap', 'Small Cap', 'Value']
    

    我需要创建一个具有以下输出的列表。复制值并交替地将字符串(\u-PE&\u-book)附加到列表中的值。 预期输出:

    column_names_PE =  ['Large Cap_PE', 'Large Cap_book','Mid Cap_PE','Mid Cap_book' 'Small Cap_PE', 'Small Cap_book' 'Value_PE','Value_book']
    

    我可以使用代码附加字符串 [s + "_PE" for s in column_names] . 但不确定如何交替复制和附加字符串。谁能帮帮我吗。

    4 回复  |  直到 8 年前
        1
  •  2
  •   Laurent LAPORTE    8 年前

    如果您有:

    column_names = ['Large Cap', 'Mid Cap', 'Small Cap', 'Value']
    suffixes = ["_PE", "_book"]
    

    要创建带有后缀的列表,可以执行以下操作:

    使用经典循环:

    column_names_PE = []
    for column_name in column_names:
        for suffix in suffixes:
            column_names_PE.append(column_name + suffix)
    

    在理解中使用列表:

    column_names_PE = [column_name + suffix
                       for column_name in column_names
                       for suffix in suffixes]
    

    您可以获得:

    ['Large Cap_PE',
     'Large Cap_book',
     'Mid Cap_PE',
     'Mid Cap_book',
     'Small Cap_PE',
     'Small Cap_book',
     'Value_PE',
     'Value_book']
    
        2
  •  2
  •   Spencer Wieczorek    8 年前

    你可以迭代一下 column_names item + "_PE" item + "_book" :

    column_names = ['Large Cap', 'Mid Cap', 'Small Cap', 'Value']
    
    column_names_PE = []
    
    for item in column_names:
      column_names_PE.append(item + "_PE")
      column_names_PE.append(item + "_book")
    
    print(column_names_PE)
    # ['Large Cap_PE', 'Large Cap_book', 'Mid Cap_PE', 'Mid Cap_book',
    #  'Small Cap_PE', 'Small Cap_book', 'Value_PE', 'Value_book']
    
        3
  •  2
  •   janos slartidan    8 年前

    简单的列表理解会让你更接近:

    >>> [[c + '_PE', c + '_book'] for c in column_names]
    [['Large Cap_PE', 'Large Cap_book'], ['Mid Cap_PE', 'Mid Cap_book'], ['Small Cap_PE', 'Small Cap_book'], ['Value_PE', 'Value_book']]
    

    要展平嵌套列表,可以使用 chain 从…起 itertools :

    >>> from itertools import chain
    >>> list(chain.from_iterable([[c + '_PE', c + '_book'] for c in column_names]))
    ['Large Cap_PE', 'Large Cap_book', 'Mid Cap_PE', 'Mid Cap_book', 'Small Cap_PE', 'Small Cap_book', 'Value_PE', 'Value_book']
    
        4
  •  1
  •   whackamadoodle3000    8 年前
    [item for sublist in [(s + "_PE",s + "_book") for s in column_names] for item in sublist]
    

    您可以尝试这种列表理解,它附加一个元组,然后将列表展平。结果:

    ['Large Cap_PE',
     'Large Cap_book',
     'Mid Cap_PE',
     'Mid Cap_book',
     'Small Cap_PE',
     'Small Cap_book',
     'Value_PE',
     'Value_book']
    
    推荐文章