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

时间:2018-08-24 10:35:49

标签: 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时,它可以完美工作。但是,给出一个空列表也会产生空白输出。这是有问题的,因为这四个列表之一始终是空的,我无法确定是哪个。

有没有一种方法只能将填充列表的名称传递给for循环?我不确定在哪里使用生成器表达式,我认为这可能是答案。

1 个答案:

答案 0 :(得分:2)

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