加入两个连续的列表元素

join two consecutive list elements

我有一个列表 names 看起来像这样

names = ['Peter Orson', 'Marc Johnson', 'Peter', 'Johnson']

我想加入该列表的两个特定元素

desired_names = ['Peter Orson', 'Marc Johnson', 'Peter Johnson']

警告:

  1. 我不能使用索引
  2. 我只需要定位这两个单独的元素,即使其他元素共享某些部分(例如相同的名字)

代码:

regex = re.compile(r'/^Peter$/)
for i in names:
    if regex:
        i = ' '.join(map(str, regex)) # join with next list element into one string

我认为我有正确的方法来解决我的问题,但我不知道如何连接和替换匹配的字符串元素

如评论中所述,您不需要正则表达式来执行此操作:

names = [
    "Peter Orson",
    "Marc Johnson",
    "Peter",
    "Johnson",
]

idx = names.index("Peter")
names[idx] = names.pop(idx) + " " + names[idx]
print(names)

打印:

['Peter Orson', 'Marc Johnson', 'Peter Johnson']

如果您不确定 "Peter" 是否在列表中,您可以先查看:

if "Peter" in names:
    idx = names.index("Peter")
    names[idx] = names.pop(idx) + " " + names[idx]