列表
-
列表的基本使用
当我们有多个数据需要按照一定顺序保存的时候,可以考虑列表
-
列表的表示
-
使用**[]来表示列表,列表里的每一个数据成为一个元素**,元素之间用逗号隔开
name=['张三','李四','王五','关羽','张飞','赵云','王昭君','蔡文姬'] print(name)
-
使用list(可迭代对象)内置类定义一个列表:将一个可迭代对象转换成列表
name=list(('张三','李四','王五','关羽','张飞','赵云','王昭君','蔡文姬')) print(name)
-
-
列表的下标和切片
-
和字符串一样,列表也有下标和切片,而且用法是一致的
name=list(('张三','李四','王五','关羽','张飞','赵云','王昭君','蔡文姬')) print(name[2])#下标 print(name[2:5:])#切片
-
不同的是,可以通过修改下标来改变列表对应元素,此时列表已经被修改了
name=list(('张三','李四','王五','关羽','张飞','赵云','王昭君','蔡文姬')) name[3]='秦始皇' print(name)
-
-
-
列表的增删改查
-
可以是用append,insert,extend实现列表的增加数据
-
append在列表的结尾增加数据
-
insert(index,object)在指定索引的前面增加数据
-
extend(iterable)将一个可迭代对象增加到列表结尾
heros=['阿珂','娜可露露','露娜','韩信','孙悟空','兰陵王','李元芳'] heros.append('镜') print(heros)#在列表的结尾增加数据 heros.insert(4,'云中君')#在指定索引的前面增加数据 print(heros) x=['李白','貂蝉','上官婉儿'] heros.extend(x)#将一个可迭代对象增加到列表结尾 print(heros)
-
-
删除数据的方法:pop remove clear del
-
**pop()**默认删除列表最后一个数据,并且返回该数据
-
pop(index)删除索引的元素,并且返回该数据
-
remove删除指定的字符,(只删除下标最小的),如果没有,会报错
-
del删除索引的元素,它的功能很强大,可以删除变量
-
**clear()**清空一个列表
master=['王昭君','甄姬','貂蝉','米莱迪','小乔','妲己','安其拉'] x=master.pop()#默认删除列表最后一个数据,并且返回该数据 print(x) print(master) master.pop(2) print(master) master.remove('小乔')#删除指定的字符 print(master) del master[2]#删除指定索引的字符 print(master) master.clear()#清空列表 print(master)
-
-
查询数据的方式:**index count in **
-
index查询指定数据在列表中出现的最小索引,如果没有,会报错
-
count查询指定数据在列表中出现的次数
-
in成员运算符,后面只要是可迭代对象即可
tanks=['张飞','廉颇','庄周','程咬金','东皇太一','项羽','白起','程咬金'] print(tanks.index('程咬金'))#查询指定数据在列表中出现的最小索引,如果没有,会报错 print(tanks.count('程咬金'))#查询指定数据在列表中出现的次数 print('白起' in tanks)
-
-
-
遍历:针对的是可迭代对象,意思是将所有数据访问一遍
-
**for…in **循环本质是不断调用迭代器的 next 方法不断查找下一个数据
-
while循环:需要用到**len(可迭代对象)**获取列表的长度
#for...in 循环 killers=['李白','阿珂','娜可露露','兰陵王','赵云','韩信','孙悟空'] for k in killers: print(k) #while循环 i=0 while i<len(killers): print(killers[i]) i+=1
-
-
冒泡排序
4.1. 交换两个变量的值
-
使用第三方变量
-
使用运算符,只限于数字
-
使用异或运算符:用到了abb==a这个结果
-
使用Python独有的运算符
#交换两个变量的数据 a=13 b=20 #使用第三方变量 c=a a=b b=c #使用运算符,只限于数字 a=a+b b=a-b a=a-b #使用异或运算符:用到了a^b^b==a这个结果 a=a^b b=a^b a=a^b #使用Python独有的运算符 a,b=b,a
4.2. 冒泡排序的想法:相邻的两个元素比较大小:前一个比后一个大,则两个交换位置,直到最大的数排到最后,完成第一轮排序,然后重复上面的操作即可
num=[6,5,9,8,4,1,5,2,3,7,0] j=0 while j<len(num)-1: i=0 while i <len(num)-1: if num[i]>num[i+1]: num[i],num[i+1]=num[i+1],num[i] i+=1 print(num) j+=1 print(num)
显然上面的代码重复比较了一些,可以做一些小小的优化
num=[6,5,9,8,4,1,5,2,3,7,0] j=len(num)-1 while j>0: i=0 while i <j: if num[i]>num[i+1]: num[i],num[i+1]=num[i+1],num[i] i+=1 print(num) j-=1 print(num)
-
-
列表排序**
-
num.sort()是正序,此时num这个列表已经发生改变
-
**num.sort(reverse=True)**是倒序
-
sorted(可迭代对象)内置函数对列表进行排序,此时num这个列表并不发生改变,而是返回一个新列表
-
reverse()将列表中的元素翻转。此时列表也发生了变化
num=[6,5,9,8,4,1,5,2,3,7,0] num.sort()#正序 print(num) num.sort(reverse=True)#倒序 print(num) x=sorted(num)#正序 y=sorted(num,reverse=True)#倒序 print(x) print(y) names=['zhangsan','wangwu','lisi'] names.reverse()#翻转 print(names)
-