Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 迭代两个列表,其中一个列表可能为空_Python - Fatal编程技术网

Python 迭代两个列表,其中一个列表可能为空

Python 迭代两个列表,其中一个列表可能为空,python,Python,我想得到两个列表的乘积。我可以使用以下方法进行此操作: 来自itertools导入产品的 对于产品中的i([1,2],'a','b']): 打印(i,end='\t') 给出: (1,'a')(1,'b')(2,'a')(2,'b')) 问题是两个列表中的一个可能是空的。在本例中,我只需要将非空列表作为普通for循环进行迭代。比如: 表示我在某物中([1,2],]): 打印(i,end='\t') 给予: 12 如果我在开始时用许多检查列表长度的if语句处理异常,并且对每个组合使用相同的

我想得到两个列表的乘积。我可以使用以下方法进行此操作:

来自itertools导入产品的

对于产品中的i([1,2],'a','b']):
打印(i,end='\t')
给出:

(1,'a')(1,'b')(2,'a')(2,'b'))
问题是两个列表中的一个可能是空的。在本例中,我只需要将非空列表作为普通for循环进行迭代。比如:

表示我在某物中([1,2],]):
打印(i,end='\t')
给予:

12
如果我在开始时用许多检查列表长度的
if
语句处理异常,并且对每个组合使用相同的代码(
list1
为空,
list2
为空,没有一个为空),那么代码工作得很好,但这样我只编写了相同的代码3次:

来自itertools导入产品的

如果不是列表1:
对于清单2中的i:
打印(i,end='\t')
elif未列出2:
对于清单1中的i:
打印(i,end='\t')
其他:
对于产品中的i(列表1、列表2):
打印(i,end='\t')

有更优雅的方法吗?

我建议您采用以下方法:

seq = product(list1, list2) if (list1 and list2) else (list1 or list2)

for item in seq:
    print(item, end='\t')

你可以通过阅读了解为什么使用
有效。

你不能循环一个元组吗
for i in(lst,lst2):
@Tomerikoo这并不能解决“在第二种情况下,我需要所有的组合,比如嵌套的for循环”,因为zip_最长会打印较长列表中的所有元素,但它不会将它们与较短列表中的元素组合。它只是将它们标记为“None”@The.B我需要访问这两个元素,因为它们是dataframe中的列,我需要用.loc选择它们separately@Tomerikoo我认为这很清楚,但无论如何:
list1=[1,2,3,4]list2=[“a”,“b”]out=1A,1B,2A,2B等
如果一个列表为空:`list1=[]list2=[“a”,“b”]out=“a”,“b”`检查产品,我认为如果一个列表为空,则它不起作用。如果它们的长度相同,我只需要像嵌套循环一样的组合