如何将0放在列表的顶部,1放在最后?

2024-04-20 02:56:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个代码,它将0放在列表的顶部,1放在列表的末尾,但这增加了空间和时间的复杂性。如何降低代码的复杂性

代码:

array = [0, 1, 0, 1, 1, 0]
new_list = []
new_list1 = []
for i in array:
    if i == 0:
        new_list.append(i)
    else:
        new_list1.append(i)

print(new_list + new_list1)

Tags: 代码in列表newforif时间空间
3条回答

如果输出需要 [0, 0, 0, 1, 1, 1]

您可以执行以下操作:

In [17]: 
array = [0, 1, 0, 1, 1, 0]
print([0] * array.count(0) + [1] * array.count(1))


Out[17]: [0, 0, 0, 1, 1, 1]

稍微修改代码:

array = [0, 1, 0, 1, 1, 0]
new_list = []
for i in array:
    if i == 0:
        new_list.append(i)
new_list.extend(1 for _ in range(len(array) - len(new_list)))
print(new_list)

印刷品:

[0, 0, 0, 1, 1, 1]

没有计数和保持循环的另一种方法可能是:

array = [0, 1, 0, 1, 1, 0]
new_list = []

for val in array:
    if val == 1:
        new_list.append(1)
    else:
        new_list.insert(0, 0)

>> [0, 0, 0, 1, 1, 1]

相关问题 更多 >