在python中用元素1替换元素

2024-05-16 02:32:35 发布

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

嘿,我有个问题: 我有一张单子

l = [ 'a', 'b', '"', 'c', 'd', '"', 'e'] 

现在我想用前面的元素替换所有的'''。 这意味着:

输出=[ 'a', 'b', 'b', 'c', 'd', 'd', 'e']

混凝土:

    Straßen_list = ['Katharinenstraße', 'iakobstraße', 'Katharinenstraße', 
'ilhelmsplatzKatharinen-', 'Hauptstätterstraße', '"', 'Wilhelmsplatzalter', 
'"', 'Schlosscrstraße', 'Houptstcktterstraße1^Uhlandapotheke\n', ';"', 
'!Torstraße[Einblick', 'HauptstätterstraßeNr50-36', '"', '"', 
"Hauptstätterstraße;Hs.i'ir.24", 'Brückenstraße', 'HauptstätterstraßeÖ', 
'Holzstraße', 'Rosenstraße', 'Holzstraße2', 'tilhlcurr', 
'HolzstraßeDanziger', 'EsslingerstraßeDanz.Freiheit', 'Danz.Freiheit', 
'Esslinger', 'RosenstraßeEsslinger8tr»', 'Esslinger', 'Esslinget', 
'bagnerstraße', 'Esslinger', 'Leonhardsplatz!Blickgegen', '*Holz-', '"', '"', 
'"', '<hardskirche\n', '', '']

我需要把所有的''替换成元素。你知道吗

谁能帮帮我!!我快疯了。。。你知道吗


Tags: 元素list单子en混凝土strahauptstfreiheit
3条回答

易于理解的方法:

l = [ 'a', 'b', '"', 'c', 'd', '"', 'e']

def replacer(l):
    for i in range(1,len(l)):
        if l[i] == '"':
            l[i] = l[i-1]
    return(l)

print(replacer(l))

由于您没有指定如何处理第一个术语,因此我忽略了它:)

编辑:仍然不太清楚您想用“'”一行来做什么,第二个“'”应该用-2替换,还是保持这样? 如果你想保持这样,你应该试试这个:

l = [ 'a', 'b', '"', 'c', 'd', '"', 'e']

def replacer(l):
    out = [l[0]]
    for i in range(1,len(l)):
        if l[i] == '"':
            out.append(l[i-1])
        else:
            out.append(l[i])
    return(out)

print(replacer(l))

您仍然没有指定如何处理第一个术语,如果它是'',它是否应该取列表中最后一个术语的值?:)

您可以使用列表:

l = [ 'a', 'b', '"', 'c', 'd', '"', 'e']
out = [elt if elt != '"' else l[i-1] for i, elt in enumerate(l)]

print(out)
# ['a', 'b', 'b', 'c', 'd', 'd', 'e']

但是,如果初始列表可以在一行中包含多个空项,这将无法按预期工作。在这种情况下,您可以:

data = [ 'a', 'b', '"', '"', 'c', 'd', '"', 'e']  # 2 " in a row

out = []
for elt in data:
    if elt != '"':
        last = elt
    out.append(last)

print(out)
# ['a', 'b', 'b', 'b', 'c', 'd', 'd', 'e']

这是一种使用enumerate的方法。你知道吗

例如:

l = [ 'a', 'b', '', 'c', 'd', '', 'e']
print([val if val.strip() else l[idx-1] for idx, val in enumerate(l)]) 
# --> ['a', 'b', 'b', 'c', 'd', 'd', 'e']

相关问题 更多 >