簡體   English   中英

Python itertools:帶有過濾空字符串的笛卡爾積

[英]Python itertools: Cartesian product with filtering of empty strings

我正在編寫一個腳本來調用帶有所有可能的命令行參數的程序。 其中一些論點可能不存在。 嘗試1:

args1 = ['program.exe']
args2 = ['1', '5', '']
args3 = ['--foo', '']
for args in itertools.product(args1, args2, args3):
    args = [arg for arg in args if arg != '']
    subprocess.call(list(args))

是否有另一種方法來獲取這些排列而不必手動濾除空字符串? 如果我只是將其保留在參數列表中,事情就會中斷。 我的意思是,我的方法行得通,但是我覺得會有更多內置的方法來處理此問題。 盡管閱讀此問題使我認為可能性較小。

如果您希望它看起來更干凈一點,可以使用內置的filter()函數。

args = filter(lambda x: not x, args)

或者,如果您不喜歡lambda

args = filter(not_empty, args)

----

def not_empty(x):
    return not x

我不知道僅使用itertools函數就能做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM