对于任何给定的字符串项列表,例如
my_list = ['foo', 'bar', 'baz', 'foo']
如何将每个项目的索引号附加到列表中的相应项目?形成具有格式的新列表,例如
new_list = ['foo0', 'bar1', 'baz2', 'foo3']
我的示例列表只有四个项目,但我对任意数量的字符串项目的一般化答案感兴趣(对于4个字符串项目的列表,它也适用于4)
干杯!
答案 0 :(得分:8)
更简单的方法:
new_list = [elm + str(index) for index, elm in enumerate(my_list)]
UPDATE :使用Python 3.6+和格式化的字符串文字,您可以获得更易读的代码:
new_list = [f'{elm}{index}' for index, elm in enumerate(my_list)]
答案 1 :(得分:1)
直接循环可以起作用:
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)]
答案 2 :(得分:0)
试试这个。
编辑:说明:下面的函数将列表作为输入,并返回一个列表,其中包含附加到项目的元素编号。附加到列表中每个项目末尾的数字将根据输入列表的长度用零填充。所以长度为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
答案 3 :(得分:0)
要从静态列表和重复列表创建列表,请执行以下操作:
# 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']]