如何从 any() 函数中获取变量
how to get the variable from an any() function
我正在寻找满足条件的 list_select 变量并在下一行追加。
如何在 list_select.append(dupe) 行中提供此功能?
if any(list_select in dupe for list_select in pattern_dict):
list_select.append(dupe)
您不能使用 any
,它只是 returns 一个布尔值。请改用生成器表达式:
gen = (x for x in pattern_dict if x in dupe)
list_select = next(gen, None)
if list_select is not None:
...
any
函数应该 return 一个布尔值,所以如果你想要 return 第一次匹配的行为略有不同,请编写一个具有该行为的函数:
def first(seq):
return next(iter(seq), None)
用法:
>>> first( i for i in range(10) if i**2 > 10 )
4
>>> first( c for c in 'Hello, world!' if c.islower() )
'e'
>>> first( i for i in range(10) if i == 100 ) is None
True
要在您的示例中使用,您可以这样写:
list_select = first( x for x in pattern_dict if x in dupe )
if list_select is not None:
list_select.append(dupe)
如果您使用的是 Python 3.8 或更高版本,可怕的 "walrus" operator 允许更直接的解决方案:
if any((list_select := x) in dupe for x in pattern_dict):
list_select.append(dupe)
这种情况恰好是one of the motivating examples引入海象算子
我正在寻找满足条件的 list_select 变量并在下一行追加。
如何在 list_select.append(dupe) 行中提供此功能?
if any(list_select in dupe for list_select in pattern_dict):
list_select.append(dupe)
您不能使用 any
,它只是 returns 一个布尔值。请改用生成器表达式:
gen = (x for x in pattern_dict if x in dupe)
list_select = next(gen, None)
if list_select is not None:
...
any
函数应该 return 一个布尔值,所以如果你想要 return 第一次匹配的行为略有不同,请编写一个具有该行为的函数:
def first(seq):
return next(iter(seq), None)
用法:
>>> first( i for i in range(10) if i**2 > 10 )
4
>>> first( c for c in 'Hello, world!' if c.islower() )
'e'
>>> first( i for i in range(10) if i == 100 ) is None
True
要在您的示例中使用,您可以这样写:
list_select = first( x for x in pattern_dict if x in dupe )
if list_select is not None:
list_select.append(dupe)
如果您使用的是 Python 3.8 或更高版本,可怕的 "walrus" operator 允许更直接的解决方案:
if any((list_select := x) in dupe for x in pattern_dict):
list_select.append(dupe)
这种情况恰好是one of the motivating examples引入海象算子