【问题标题】:Python: Appending the index number of a string item in a list to that itemPython:将列表中字符串项目的索引号附加到该项目
【发布时间】:2015-09-21 19:42:39
【问题描述】:

对于任何给定的字符串项目列表,例如

my_list = ['foo', 'bar', 'baz', 'foo']

如何将每个项目的索引号附加到列表中的相应项目?形成具有格式的新列表,例如

new_list = ['foo0', 'bar1', 'baz2', 'foo3']

我的示例列表只有四个项目,但我对任意数量的字符串项目的通用答案感兴趣(对于 4,000 个字符串项目的列表同样适用于 4)

干杯!

【问题讨论】:

    标签: python string list integer concatenation


    【解决方案1】:

    更简单的方法:

    new_list = [elm + str(index) for index, elm in enumerate(my_list)]
    

    更新:使用 Python 3.6+ 和格式化字符串文字,您可以获得更易读的代码:

    new_list = [f'{elm}{index}' for index, elm in enumerate(my_list)]
    

    【讨论】:

      【解决方案2】:

      直接的 for 循环可以工作:

      counter = 0
      new_list = []
      for each_item in the_list:
          new_list.append(each_item + str(counter))
          counter += 1
      

      enumerate() 的列表理解也可以,但可读性较差:

      new_list = [each_item + str(index) for each_item, index in enumerate(the_list)]
      

      【讨论】:

        【解决方案3】:

        试试这个。

        编辑: 说明:下面的函数将一个列表作为输入,并返回一个列表,其中包含附加到项目的元素编号。附加到列表中每个项目末尾的数字根据输入列表的长度用零填充。因此,长度为 30 的列表附加了数字 00 到 29; 3901 的列表将附加数字 0000 到 3900。

        from numpy import log10
        
        def numberedList(inlist):
            i = 0
            z = int(log10(len(inlist))) + 1
            outlist = []
            for element in inlist:
                outlist.append(str(element) + str(i).zfill(z))
                i = i + 1
            return outlist
        

        【讨论】:

        • 你能补充一些解释吗?
        【解决方案4】:

        从静态列表和重复列表创建列表:

        # need: ['A','B','C','First1','Middle1','Last1','First2','Middle2','Last2',...]
        ['A','B','C']+[s+str(n) for n in range(1,len(names)+1) for s in ['First','Middle','Last']]
        

        【讨论】:

          猜你喜欢
          • 2021-08-11
          • 2013-08-07
          • 2013-06-03
          • 2023-03-23
          • 1970-01-01
          • 1970-01-01
          • 2019-06-11
          • 2015-08-22
          • 1970-01-01
          相关资源
          最近更新 更多