什么是Perl模式的python等价物,以跟踪是否已经看到某些东西?

jnm*_*man 5 python perl

在Perl中,可以执行以下操作

for (@foo) {
    # do something 
    next if $seen{$_}++;
}
Run Code Online (Sandbox Code Playgroud)

我希望能够在Python中执行等效操作,即如果已执行一次则跳过块.

Gre*_*ill 11

seen = set()
for x in foo:
    if x in seen:
        continue
    seen.add(x)
    # do something
Run Code Online (Sandbox Code Playgroud)

有关set更多信息,请参阅文档.

此外,itertools模块文档底部的示例包含一个unique_everseen可以像这样使用的生成器:

for x in unique_everseen(foo):
    # do something
Run Code Online (Sandbox Code Playgroud)