##排序:
内置排序
冒泡排序
插入排序
选择排序
希尔排序
堆排序
快速排序
归并排序
#内置排序
a = [9,6,8,3,0,2,1,7,4,]
print(id(a))#查询地址,看前后是否一样位置
a.sort()
print(id(a))
print(a)
#根据情况选择方法,(不需要保留原来list)原数组有用选上面,没用选下面
a = [9,6,8,3,0,2,1,7,4,]
b =sorted(a)
print(id(a))
print(id(b))
print(b)
#冒泡(相邻两元素比较)
a= [5,8,9,3,2]
for i in range(len(a)-1):
for j in range(len(a)-1-i):
if a[j] > a[j+1]:
temp = a[j]
a[j] = a[j+1]
a[j+1] = temp
del temp
print(a)
#改良冒泡(同eg2,加上flag,可以跳出)
a= [1,2,3,4,5,6,8,9,7]
count = 0
for i in range(len(a)-1):
flag = False#加标记,永远是False
count += 1
for j in range(len(a)-1-i):
if a[j] > a[j+1]:
temp = a[j]
a[j] = a[j+1]
a[j+1] = temp
del temp
flag = True
if not flag:
break
print(count)
print(a)
##列表操作
#追加(在列表后追加)
a = [1,'e',4,'r','t']
a.append("w")
print(a)
#删除:pop,remove,del
names = ['a','b','c','d']
names.pop() #只删除最后一个元素
names.remove("c") #删除指定元素(在原有基础上删除)
del names[2] #按下标删除
print(names)
#查找元素所在位置(下标)
names = ['a','b','c','d']
index = names.index("d")
index = names.index("a",1,2)#(从下标1开始找,a下标是0 ,2是终止位置不包含在内)
print(index)
#统计元素的个数
names = ['a','b','c','d']
count = names.count("c")
print(count)
#反转
names = ['a','b','c','d']
names.reverse()
print(names)
#字符串转列表
str1 = "asdfg"
arr = [str(i) for i in str1]
arr.reverse()#反转
print(arr)
#清空 clear
names = ['a','b','c','d']
names.clear()
print(names)
#插入#这是列表插入,链表效率高
names = ['a','b','c','d']
names.insert(2,"t")
print(names)
#拼接两个列表names.extend§(在空间里新建一个列表导入)
names = ['a','b','c','d']
p = [1,2,3]
names.extend(p)
print(names)
print(p)
#对列表进行切片处理
#列出所有元素
#print(names[::])
#(也可以一个:,两个::有默认值)
#列出最一个元素
print(names[-1])
#列出范围中元素
#print(names[1:3])(下标的起点终点但不包括终点)
#复制
b = names.copy()
b.pop()
print(b)
print(names)
#浅表复制copy.copy(a)(Python写的)
import copy
a = ['a','b',[1,2]]
b = copy.copy(a)
a[2].append(3)
print(a)
print(b)