Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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_Python 3.x_Conditional_Variable Assignment - Fatal编程技术网

Python 在多重赋值条件中省略一个值

Python 在多重赋值条件中省略一个值,python,python-3.x,conditional,variable-assignment,Python,Python 3.x,Conditional,Variable Assignment,场景: 快速排序编码挑战 输入是两行:第1行=枢轴,第2行是未排序的整数列表 输出是一个列表,小于轴的值向左移动,然后是轴,值>=移动到轴 示例: 输入: 7 1 2 4 9 3 7 11 5 12 输出: 1 2 4 3 5 7 9 11 12 我想在Python 3中做什么(如果可能): 如果值>>枢轴=7 >>>左、右=[列表(筛选器(lambda n:n=pivot,未排序))] >>>左 [1, 2, 4, 3, 5] >>>对 [9, 7, 11, 12] 但是Python中没

场景:

快速排序编码挑战

输入是两行:第1行=枢轴,第2行是未排序的整数列表 输出是一个列表,小于轴的值向左移动,然后是轴,值>=移动到轴

示例:

输入:

7
1 2 4 9 3 7 11 5 12
输出:

1 2 4 3 5 7 9 11 12
我想在Python 3中做什么(如果可能):

如果值 问题:

有没有办法做我想做的事?我知道如何分别赋值,但我很好奇在多个赋值中是否需要赋值


“None”不能作为列表使用,我需要维护以前的值

我的意思是,你可以做这样的事情,通过
过滤器
来近似相同的效果。请注意,
列表(filter(…)
只是具体化过滤器,以便正确打印

>>> unsorted = [1, 2, 4, 9, 3, 7, 11, 5, 12]
>>> pivot = 7
>>> left, right = [list(filter(lambda n: n < pivot, unsorted)), list(filter(lambda n: n >= pivot, unsorted))]
>>> left
[1, 2, 4, 3, 5]
>>> right
[9, 7, 11, 12]
未排序=[1,2,4,9,3,7,11,5,12] >>>枢轴=7 >>>左、右=[列表(筛选器(lambda n:n=pivot,未排序))] >>>左 [1, 2, 4, 3, 5] >>>对 [9, 7, 11, 12]
但是Python中没有“不指定”的语法原语

您可以使用
None
zip
和结尾处的
过滤器对其进行排序(尽管您还必须重新定位7以进行快速排序):

[1]中的
:l=map(int,“1 2 4 9 3 7 11 5 12”.split())
[2]中:左,右=zip(*[(v,无)如果v<7,则为(无,v)表示l中的v])
在[3]中:左,右
出[3]:
((1,2,4,None,3,None,None,5,None),
(无,无,无,9,无,7,11,无,12))
在[4]中:过滤器(lambda x:x不是无,左),过滤器(lambda x:x不是无,右)
Out[4]:((1,2,4,3,5),(9,7,11,12))
请注意,
过滤器(无,iterable)
将从
iterable
中删除错误值(包括
0
),这可能不利于排序算法。
In [1]: l = map(int, "1 2 4 9 3 7 11 5 12".split())

In [2]: left, right = zip(*[(v, None) if v < 7 else (None, v) for v in l])

In [3]: left, right
Out[3]:
((1, 2, 4, None, 3, None, None, 5, None),
 (None, None, None, 9, None, 7, 11, None, 12))

In [4]: filter(lambda x: x is not None, left), filter(lambda x: x is not None, right)
Out[4]: ((1, 2, 4, 3, 5), (9, 7, 11, 12))