我将对列表或 numpy 数组执行以下操作:
[0, 0, 0, 1, 0, 0, 4, 2, 0, 7, 0, 0, 0]
将所有非零值移到右侧:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 2, 7]
我怎样才能有效地做到这一点?
谢谢
============
对不起,我没说清楚,我需要保留非零元素的顺序。
请您参考如下方法:
您可以按 bool 值对列表进行排序。所有虚假值(数字为零)都将被推到列表的前面。 Python 的内置排序看起来很稳定,因此其他值将保持其相对位置。
例子:
>>> a = [0, 0, 0, 1, 0, 0, 5, 2, 0, 7, 0, 0, 0]
>>> sorted(a, key=bool)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 2, 7]
