Python—列表元组和字典
Python—列表元组和字典
列表
元组
字典
列表:
列表是Python中的一种数据结构,他可以存储不同类型的数据。尽量存储同一种类型
列表索引是从0开始的,我们可以通过索引来访问列表的值。
列表的赋值
案例
A=[1,'xiaoWang','a',[2,'b']] a、lst = [1,2,3,4,5,6]#list使用[] , {}字典,()tuple
list.append(元素) 在列表尾部追加元素
第一种
lst.append(10)#再尾部追加 #结果:[1, 2, 3, 4, 5, 6, 10]
在前方插入/修改
第二种
print(lst[0:5:2]) #结果:[1, 3, 5] lst[0]=5 #结果:[5, 2, 3, 4, 5, 6, 10] lst[0:2]=7,12,3#结果:[7, 12, 3, 4, 5, 6, 10] lst[0]=1,2 #默认变为元组插入该位置
extend 追加内容
第三种
lst2=[50,90] #追加的内容 lst.extend(lst2)# 追加到lst的末尾 [(1, 2), 12, 3, 3, 4, 5, 6, 10, 50, 90] print(lst.__add__(lst2)) # 追加同时,返回追加的数字 结果:[(1, 2), 12, 3, 3, 4, 5, 6, 10, 50, 90, 50, 90]
insert 追加(少用)
第四种
lst.insert(0,66) #追加到首位 原位的值全部后移 [66, 1, 2, 3, 4, 5, 6] #当插入不在尾部时,直接转为链式表,结果时再转回 线性表,不适用,少用
存在与否
第五种
print(8 in lst) #是否存在 存在为true /false 结果False print( 1 in lst)#结果 True
根据值查找下标
第六种
print(lst.index((5))) #返回值的下标 结果 :4
根据下标将值替代成指定元素
第七种
lst[2],lst[5]=22,55 #根据下标将值替代成指定元素 结果:[1, 2, 22, 4, 5, 55]
多元素替换多个位置的值
第八种
lst[0:5]=77,88 #多个元素替换多个位置的值 结果:[77, 88, 55] 但如果只有一个替换值,则报错
删除del
第九种
del lst[0] #直接删除下标 结果: [2, 3, 4, 5, 6]
#删除 remove
lst.remove(2) #直接移除值 劣势:容易让人误会
#删除 pop
lst.pop() #不加值,默认移除最后一个,若加下标,则删除下标 [3, 4, 5]
循环随机数列表遍历及用长度遍历
第一种 lst=[] for i in range(5): lst.append(random.randint(0,100)) print(lst) #结果:[24, 26, 36, 92, 59] 第二种 b、随机数的遍历 [第一种] for x in lst: print(x) #结果: 98 73 56 15 75 第三种 c、随机数长度遍历 for x in range(lst.__len__()): *****#使用下标遍历****** print(lst[x]) #结果: 98 73 56 15 75
列表的排序操作
#列表的排序 lst.sort() #正序 lst.sort(reverse=True) #倒序 lst.reverse() #倒序 print(lst)
冒泡排序
#冒泡排序 #双重循环、外层控制比较轮数,内层循环控制每轮比较次数 for i in range(len(lst)-1): #最后一轮只剩一个元素,不需要比较,因此减-1 for j in range(len(lst)-i-1):#最后一个只剩一个元素,不需要比较,所以-1 #每轮都能确定一个最大值,所以每轮减少一次比较 if lst[j] > lst[j+1]: tmp=lst[j] lst[j]=lst[j+1] lst[j+1]=tmp print(lst)
选择排序
#演示选择排序 :从前向后遍历,找到一个最小值与该位置交换 import random lst=[] for x in range(10): lst.append(random.randint(0,100)) print(lst) #排序 for x in range(len(lst)-1):#最后一个位置不需要比较 tmp=lst[x] #每一轮定一个初始值,目的和后面的值比较 idx=x for y in range(x+1,len(lst)): #从初始值向后遍历 if(tmp>lst[y]):#木得是为了在一轮中找出最小值 tmp=lst[y]#最小值保存在tmp中 idx=y#下标保存在idx中 else: lst[idx]=lst[x] #根据最小值下标,把初始值放进去 lst[x]=tmp#把最小值放入初始值位置中 print(lst)
插入排序
#插入排序1:
arr=[10,20,30,50,80] a=int(input("请输入一个整数:")) arr.append(a) idx=len(arr)-1 while idx>0: #从后向前遍历 idx-=1 #遇到比自己小的,则在后方插入 if a>arr[idx]: arr[idx+1]=a break #遇到比自己大的,大的值向后移 else: arr[idx+1]=arr[idx] #如果到最后都没有插入,则插入首位 if idx==0: arr[0]=a print(arr)
插入排序
#插入排序2:
import random lst=[] for x in range(10): lst.append(random.randint(0,100)) print(lst) for x in range(1,len(lst)): idx=x tmp=lst[x] while x>0: x-=1 if tmp>=lst[x]: lst[x+1]=tmp break else: lst[x+1]=lst[x] if x==0: lst[0]=tmp print(lst)
嵌套列表的遍历
指的是一个列表的元素又是一个列表 【遍历的区别】
案例一:
for x in school_name: for y in range(len(x)): print(x[y]) #结果:北大、清华、南开、中山、山大、苏大
案例二
for x in school_name: for y in x: print(y)
列表常用循环
列表常用循环 lst=["zhao","qian","sun","li","zhou","wu","zhen","wang"]
lst2=lst.copy() #赋值给指定的值
print(lst2) list.reverse(lst) #即将列表反序输出
print(lst)
元组
元素的元素不可修改,使用()包裹元素
基本使用
tpl=(1,2,3,4,5) print(type(tpl)) print(tpl[0]) print(tpl[0:3]) print(tpl[0:5:2]) #步长 显示单数 print(tpl[1:5:2]) #步长 显示双数 for x in tpl: #遍历 print(x)
函数
print(max(tpl)) #显示最大值 print(min(tpl)) #显示最小值 print(list(tpl)) #元组转为列表【常用】
字典
一种存储数据的容器,每一个元素由键值对构成
set用法
set dct={'a','b','c','a'} #当大括号内没有键值对时,使用的是set(无序集合),特点是“去重” print(dct) print(type(dct))
案例
d={"name":"大黄","age":"5","strain":"拉布拉多"} #json字符串
print(d["name"])
print(d.get("我草"))
d["name"]="羊总"
d["lalala"]="1996.888"
print(d)
d.setdefault("吴亦凡","侮辱未成年") #存在不动,不存在给你加进去
print(d)
删除 d.clear()#清空 结果:{} del d['result'] #结果:{'name': '羊总', 'mouth': 5, 'how': '2021-11'} print(d)
keys用法
#演示keys()、values()、items() dct={"name":"zhangsan","age":"18","gender":"male","id":"10"} keys=dct.keys() print(keys) dct.setdefault("birthday","1999-99") print(keys) for k in keys: print(k+":",dct[k])
items()用法
dct={"name":"zhangsan","age":"18","gender":"male","id":"10"} #items itms=dct.items() print(itms) for (x,y) in itms: print(x+":",y)
values()用法
values=dct.values() print(values) #结果: dict_values(['张三', 18, 'male', 10]) 注意 后出现的数值才会被使用 for (x,y) in items: print(x+':',y)
自古英雄多磨难