我有四个列表:
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循环?我不确定在哪里使用生成器表达式,我认为这可能是答案。
答案 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)