Python:考虑一个只包含两个可能值的多次出现的列表。“我该怎么做?”;“推/压缩”;所有的一个值都在左边

Python:考虑一个只包含两个可能值的多次出现的列表。“我该怎么做?”;“推/压缩”;所有的一个值都在左边,python,list,sorting,Python,List,Sorting,我已经研究了一段时间不同的处理列表的方法,我遇到了一个我缺乏经验的自己似乎无法解决的问题 考虑列表a=[1,0,1,0,1,1,0] 我想将所有出现的1s推到左侧,使列表a=[1,1,1,0,0] 是否有一些功能我可以调用,我不知道,或我必须手动这样做?我想一个接一个地遍历列表,但我觉得这样做效率不高 这个怎么样 a.sort(key=lambda x:x!=1) 将1更改为您要移动的任何其他值。由于排序在这种情况下是一个很好的解决方案,所以它通常不起作用。如果列表中包含的元素不仅仅是0和1,

我已经研究了一段时间不同的处理列表的方法,我遇到了一个我缺乏经验的自己似乎无法解决的问题

考虑列表
a=[1,0,1,0,1,1,0]

我想将所有出现的
1
s推到左侧,使列表
a=[1,1,1,0,0]

是否有一些功能我可以调用,我不知道,或我必须手动这样做?我想一个接一个地遍历列表,但我觉得这样做效率不高

这个怎么样

a.sort(key=lambda x:x!=1)

将1更改为您要移动的任何其他值。

由于排序在这种情况下是一个很好的解决方案,所以它通常不起作用。如果列表中包含的元素不仅仅是
0
1
,您希望将找到的所有
1
连接到一个新列表中,该列表在删除这些
1
后形成,如下所示:

result = [1]*a.count(1)+list(filter(lambda x: x!=1, a))

a=[1,2,3,5,2,1,1,4]
的输出是
[1,1,1,2,3,5,2,4]

这不就是对列表排序吗?在这种情况下,按相反顺序排序。
a.sort(reverse=True)
这是否回答了您的问题?有没有办法从右边开始移动1的n个次数?例如,a=[1,0,1,0,0,1,1,1]到a=[1,1,1,1,0,0],n=2?在这种情况下,您可以使用切片进行一些游戏,如
a[-2:+a[:-2]