python中x:=w有什么用(详细代码如下)

您的任务是从字符串中删除所有连续的重复单词,只留下第一个单词条目

#例如:
#"alpha beta beta gamma gamma gamma delta alpha beta beta gamma gamma gamma delta"
#--> "alpha beta gamma delta alpha beta gamma delta"

def remove_consecutive_duplicates(s):
    x=""
    return ' '.join(w for w in s.split() if x!=w and (x:=w))
print(remove_consecutive_duplicates("alpha beta beta gamma gamma gamma delta alpha beta beta gamma gamma gamma delta"))

x用来记录最后一个不连续重复的单词, if x!=w and (x:=w)的意思是如果当前的单词w和x不相等的话把w赋值给x。x:=w中的:=是python 3.8开始支持的Walrus运算符,用来在表达式里对变量赋值,精简代码。

def remove_consecutive_duplicates(s):
    x=""
    return ' '.join(w for w in s.split() if x!=w and (x:=w))

相当于是:

def remove_consecutive_duplicates(s):
    x=""
    result=[]
    for w in s.split():
        if x!=w:
            x=w
            result.append(w)
    return ' '.join(result)