把数组[0,1,1,0,1,1,0,1,1,1,0,0]中所有的1排到左侧,0排到右侧
方法1:
思路:
(1)首先进行可以保证0在左侧,1在右侧
(2)新建一个空列表
(3)把原列表中的值从最后1个复制给新建列表,直到第一个元素被复制完
list1 = [0,1,1,0,1,1,0,1,1,1,0,0]
list1.sort()
list_len = len(list1)
list2 =[]
i = 0
j = list_len-1
for i in range(list_len):
list2.insert(i,list1[j])
i = i+1
j = j-1
if list_len == -1:
break
print(list2)
方法2:
运用两次循环的思想:
(1)新建空列表
(2)第一次循环,找出列表中都是1的元素,添加到新列表
(2)第二次循环,找出列表都是0的元素,添加到新列表中
list_1 = [0,1,1,0,1,1,0,1,1,1,0,0]
list_2 = []
for item in list_1:
if item == 1:
list_2.append(item)
for item in list_1:
if item == 0:
list_2.append(item)
print(list_2)
方法3:
遍历的同时插入和追加元素:
list_1 = [0,1,1,0,1,1,0,1,1,1,0,0]
list_2 = []
for item in list_1:
if item == 1:
list_2.insert(0,item)
else:
list_2.append(item)
print(list_2)
方法4:
利用pop,原数组处理:
list_1 = [0,1,1,0,1,1,0,1,1,1,0,0]
for index in range(len(list_1)):
if list_[index] == 1:
list_1.insert(0,list_1.pop(index))
print(list_1)