给出两个目录,例如
dirA=getTrainingDir()
dirB=getTestingDir()
现在我想循环遍历两个目录,如果它们不是None而不是空字符串
我现在正在做的是:
data_directories=[]
if dirA:
data_directories.append(dirA)
if dirB:
data_directories.append(dirB)
for data_directory in data_directories:
...
为此目的,还有更优雅的语法吗?
答案 0 :(得分:10)
没有更好的方法可以做到这一点,但你可以使用这样的东西:
if any([dirA,dirB])
或:
data_directories=[di for di in [dirA,dirB] if di]
答案 1 :(得分:0)
一种方法可能意味着使用list comprehensions:
for data_directory in [dir for dir in [dirA, dirB] if dir]:
但如果您可以修改被调用的函数,更好的策略将返回该函数的列表。
翻译示例:
>>> def getTrainingDir():
... return ['test']
...
>>> def getTestingDir():
... return []
...
>>>
>>> for data_directory in getTrainingDir() + getTestingDir():
... print(data_directory)
...
test
答案 2 :(得分:0)
您可以使用filter
方法:
dirA = 'training_dir'
dirB = None
data_directories = list(filter(bool, [dirA, dirB])) # ['training_dir']