仅将填充列表传递给 for 循环
Passing only populated lists to for loop
我有四个列表:
list1=[1,2,3,4,5,6,7,8,9]
list2=['a','b','c','d','e','f']
list3=['one','two','three','four','five','six','seven']
list4=[]
我正在尝试运行以下代码生成这些列表内容的所有可能产品:
for i in itertools.product(list1,list2,list3,list4):
print(i)
当输入只有 list1、list2 和 list3 时,它完美地工作。但是,给出一个空列表也会产生空白输出。这是有问题的,因为这四个列表中的一个总是空的,我不知道它会是哪个。
有没有办法只将填充列表的名称传递给 for 循环?我不确定生成器表达式应该去哪里,我认为这可能是这里的答案。
使用filter
删除空列表。您可以使用 filter(bool, (list1,list2,list3,list4))
或 filter(None, (list1,list2,list3,list4))
来过滤列表
for i in itertools.product(*filter(bool, (list1,list2,list3,list4))):
print(i)
我有四个列表:
list1=[1,2,3,4,5,6,7,8,9]
list2=['a','b','c','d','e','f']
list3=['one','two','three','four','five','six','seven']
list4=[]
我正在尝试运行以下代码生成这些列表内容的所有可能产品:
for i in itertools.product(list1,list2,list3,list4):
print(i)
当输入只有 list1、list2 和 list3 时,它完美地工作。但是,给出一个空列表也会产生空白输出。这是有问题的,因为这四个列表中的一个总是空的,我不知道它会是哪个。
有没有办法只将填充列表的名称传递给 for 循环?我不确定生成器表达式应该去哪里,我认为这可能是这里的答案。
使用filter
删除空列表。您可以使用 filter(bool, (list1,list2,list3,list4))
或 filter(None, (list1,list2,list3,list4))
来过滤列表
for i in itertools.product(*filter(bool, (list1,list2,list3,list4))):
print(i)