Python如何将列表中的元素前置到另一个字符串列表中

2024-04-25 09:45:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份清单(清单1)如下:

[0, 1, 2]

我想将每个元素添加到字符串列表(list2)中:

^{pr2}$

给予:

['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行。发生了什么? 我希望每一项都能被添加。在


Tags: 字符串代码true元素列表linestartwhile
3条回答

代码的问题在于,实际上有两个循环,一个循环从0到列表的长度,另一个循环遍历列表中的每一行,这样看起来像:

for x in range(len(list1)):
    for line in list2:
        Finallist.append("|".join((str(list1[x]),line)))

所以您将在每次迭代中通过list1附加每一行。你可能想要这样的东西:

^{pr2}$

以下是如何在列表理解的基础上更紧凑地完成:

>>> 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)]

不要使用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

enumerate和{}将执行以下操作:

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)

输出:

^{pr2}$

相关问题 更多 >