Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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,我编写以下递归解决方案来合并两个列表: 基本情况如下: 1) 断言两个列表都为空 2) 仅断言一个列表不为空 3) 减少外壳以移除元件 4) 递归案例 def合并(l1、l2): """ :rtype:List """ 全球资源 res=[] #基本情况 #1断言为空 如果len(l1)=0且len(l2)=0:# 返回res #2请不要空着一个 如果len(l1)=0且len(l2)!=0: 返回res.extend(l2) 如果len(l1)!=0和len(l2)=0: 返回资源扩展(l1)

我编写以下递归解决方案来合并两个列表:

基本情况如下:

1) 断言两个列表都为空

2) 仅断言一个列表不为空

3) 减少外壳以移除元件

4) 递归案例

def合并(l1、l2):
"""
:rtype:List
"""
全球资源
res=[]
#基本情况
#1断言为空
如果len(l1)=0且len(l2)=0:#
返回res
#2请不要空着一个
如果len(l1)=0且len(l2)!=0:
返回res.extend(l2)
如果len(l1)!=0和len(l2)=0:
返回资源扩展(l1)
#3在两个表中都插入一个元素
如果len(l1)=1且len(l2)=1:
如果l1[0]
至于
#2断言,只有一个不是emtty
,它很麻烦,

如何使逻辑清晰简洁?

您可以通过使用
all()
/
any()
和列表理解来缩短代码,并且不必使用单独的变量
res

def merge(l1, l2)
    if not all(l1, l2):  # triggers when either l1 or l2 is empty
        return l1 + l2   # no reason not to just concatenate an empty list
    elif len(l1) == 1 and len(l2) == 1:
        # ternary if statement
        return [l1.pop(), l2.pop()] if l1[0] < l2[0] else [l2.pop(), l1.pop()]
    else: 
        return merge(l1, l2)
def合并(l1、l2)
如果不是全部(l1,l2):#当l1或l2为空时触发
返回l1+l2#没有理由不连接空列表
elif len(l1)==1和len(l2)==1:
#三值if语句
如果l1[0]
您可以通过使用
all()
/
any()
和列表理解来缩短代码,并且不必使用单独的变量
res

def merge(l1, l2)
    if not all(l1, l2):  # triggers when either l1 or l2 is empty
        return l1 + l2   # no reason not to just concatenate an empty list
    elif len(l1) == 1 and len(l2) == 1:
        # ternary if statement
        return [l1.pop(), l2.pop()] if l1[0] < l2[0] else [l2.pop(), l1.pop()]
    else: 
        return merge(l1, l2)
def合并(l1、l2)
如果不是全部(l1,l2):#当l1或l2为空时触发
返回l1+l2#没有理由不连接空列表
elif len(l1)==1和len(l2)==1:
#三值if语句
如果l1[0]
如果len(l1)*len(l2)==0,则可以执行
:返回res.extend(l1).extend(l2)
。这应该是可行的,因为如果只有一个是空的,您仍然需要另一个,扩展空列表将不会起任何作用,因此您将得到相同的结果。如果len(l1)*len(l2)==0,则可以执行
:返回res.extend(l1)。extend(l2)
。这应该是可行的,因为如果只有一个是空的,那么您仍然需要另一个,而扩展空列表将不会起任何作用,因此您将得到相同的结果。