Python如何将列表中的元素添加到另一个字符串列表中
Posted
技术标签:
【中文标题】Python如何将列表中的元素添加到另一个字符串列表中【英文标题】:Python how to prepend element in list to another list of strings 【发布时间】:2013-04-18 10:29:23 【问题描述】:我有一个列表(list1)如下:
[0, 1, 2]
我想将每个元素添加到字符串列表 (list2
) 中:
['Start|983471|String1|True\n',
'Start|983472|String2|True\n',
'Start|983473|String3|True\n']
给予:
['0|Start|983471|String1|True\n',
'1|Start|983472|String2|True\n',
'2|Start|983473|String3|True\n']
我的代码:
Finallist = []
x=0
while x < len(list1):
for line in list2:
Finallist.append("|".join((str(list1[x]),line)))
x+=1
这会返回 9 行。怎么了? 我希望每个项目都被添加。
【问题讨论】:
【参考方案1】:您的代码的问题在于您实际上有 2 个循环,一个从 0
到列表的长度通过 x
,另一个通过列表中的每一行,所以它看起来像:
for x in range(len(list1)):
for line in list2:
Finallist.append("|".join((str(list1[x]),line)))
因此,您将在每次迭代中通过list1
附加每一行。你可能想要这样的东西:
for x in range(len(list1)):
Finallist.append("|".join((str(list1[x]),list2[x])))
下面是如何通过列表理解更紧凑地做到这一点:
>>> list1 = [0, 1, 2]
>>> list2 = ['Start|983471|String1|True\n',
'Start|983472|String2|True\n',
'Start|983473|String3|True\n']
>>> ['0|1'.format(num, s) for num, s in zip(list1, list2)]
['0|Start|983471|String1|True\n', '1|Start|983472|String2|True\n', '2|Start|983473|String3|True\n']
我观察到你只是在使用每一行的索引,所以你可以使用:
['0|1'.format(i, s) for i, s in enumerate(list2)]
【讨论】:
【参考方案2】:enumerate
和 zip
将完成这项工作:
list1 = [0, 1, 2]
data1 = ['Start|983471|String1|True\n',
'Start|983472|String2|True\n',
'Start|983473|String3|True\n']
for i, (line, num) in enumerate(zip(data1[:], list1)):
data1[i] = str(num) + '|' + line
print(data1)
输出:
['0|Start|983471|String1|True\n', '1|Start|983472|String2|True\n', '2|Start|983473|String3|True\n']
【讨论】:
【参考方案3】:不要使用for
循环..while
循环就足够了..
list1=['Start|983471|String1|True\n', 'Start|983472|String2|True\n', 'Start|983473|String3|True\n']
list2=['1','2','3']
Finallist = []
x=0
while x < len(nk):
Finallist.append(str(list2[x])+'|'+list1[x])
x+=1
【讨论】:
两者的索引,这就是我出错的地方。所有的建议都很好。谢谢。以上是关于Python如何将列表中的元素添加到另一个字符串列表中的主要内容,如果未能解决你的问题,请参考以下文章