gpt4 book ai didi

python - 操作 if any for 循环的输出

转载 作者:行者123 更新时间:2023-12-01 08:48:16 25 4
gpt4 key购买 nike

我需要比较以下序列列表项:

序列 = ['sphere_v002_', 'sphere_v002_0240_', 'test_single_abc_f401']

至:

文件夹 = 'sphere_v002'

然后处理包含文件夹的列表项。

我有一个可用的功能,但我想改进它。

当前代码是:

foundSeq = False

for seq in sequences:
headName = os.path.splitext(seq.head())[0]

#Check name added exception for when name has a last underscore
if headName == folder or headName[:-1] == folder:
foundSeq = True
sequence = seq

if not foundSeq:
...

我的改进如下:

if any(folder in os.path.splitext(seq.head())[0] for seq in sequences):
print seq

但是我收到以下错误:

赋值前引用的局部变量 seq

如何使用改进的解决方案获得正确的输出?

最佳答案

any 仅返回 bool 值,当满足条件时,它不会将 sequences 中的元素存储在变量 seq 中。

您可以做的是使用生成器并利用 None 是“Falsy”这一事实:

def get_seq(sequences, folder):
for seq in sequences:
if folder in os.path.splitext(seq.head())[0]:
yield seq

for seq in get_seq(sequences, folder):
print seq

如果您愿意,您可以将其重写为生成器表达式:

for seq in (i for i in sequences if folder in os.path.splitext(i.head())[0]):
print seq

如果从未指定条件,则生成器或生成器表达式将不会产生任何值,并且循环内的逻辑将不会被处理。

关于python - 操作 if any for 循环的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53225828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com