Python 仅将填充的列表传递给for循环

Python 仅将填充的列表传递给for循环,python,list,for-loop,empty-list,Python,List,For Loop,Empty List,我有四份清单: 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

我有四份清单:

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)

使用
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)