如何在列表理解中的每次迭代中更改变量?

Ric*_*ick 1 python list-comprehension list

所以我写了这个函数,它接受一个字符串并删除连续的重复单词。

def remove_consecutive_duplicates(s):
    previous_string = None
    li = []
    for i in s.split():
        if i != previous_string:
            li.append(i)
            previous_string = i
    return " ".join(li)
Run Code Online (Sandbox Code Playgroud)

输入: 'alpha beta beta gamma gamma gamma delta alpha beta beta gamma gamma gamma delta'

输出: 'alpha beta gamma delta alpha beta gamma delta'

但我的问题是如何将previous_string = i它添加到列表理解中?这甚至可能吗?

通常,如果没有,previous_string = i那么我可能会这样做:

def remove_consecutive_duplicates(s):
    previous_string = None
    return " ".join([i for i in s.split() if i != previous_string])
Run Code Online (Sandbox Code Playgroud)

但我不知道previous_string = i在这种情况下如何或在哪里添加。

ale*_*ame 6

从 Python 3.8 开始,您可以使用赋值表达式 :=

def remove_consecutive_duplicates(s):
    prev = None
    return " ".join([prev := i for i in s.split() if i != prev])
Run Code Online (Sandbox Code Playgroud)