把数组[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)