【问题标题】:Need help for inserting values in between each value of a list在列表的每个值之间插入值需要帮助
【发布时间】:2017-11-22 19:40:48
【问题描述】:

我有一个列表 column_names 具有以下值

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

我需要创建一个包含以下输出的列表。复制值并将字符串交替(_PE 和 _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] 附加字符串。但不确定如何复制和附加字符串。谁能帮帮我吗。

【问题讨论】:

  • 在python中它只是一个列表,不像java

标签: python list append


【解决方案1】:

如果你有:

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】:

    您可以只遍历 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】:

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

      >>> [[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']]
      

      要展平嵌套列表,您可以使用来自itertoolschain

      >>> 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】:
        [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']
        

        【讨论】:

          猜你喜欢
          • 2011-08-02
          • 1970-01-01
          • 1970-01-01
          • 2021-06-22
          • 1970-01-01
          • 2021-12-30
          • 1970-01-01
          • 1970-01-01
          • 2011-06-14
          相关资源
          最近更新 更多