文章目录
- 前言
- 一、列表
- 1、列表的赋值
- 2、循环和随机数
- a、生成随机数
- b、列表的排序操作
- c、冒泡排序
- d、嵌套列表的遍历
- 3、列表常用循环
- 列表常用循环
- 4、 选择排序
- 5、插入排序
- 二、元组
- 1、基本使用
- 函数
- 三、字典
- 1、基本操作
- a、set用法
- b、案例
- c、删除
- d、in/not in
- e、遍历
- 五、items()用法
- 六、values()用法
前言
在语言的使用中,无论使java,亦或者python,对列表、元组(pytho专属)、字典(python专属)的使用是十分常见,并且用法奇多复杂,今儿就对其进行解释和举例,进一步的走进python.
一、列表
一种数据结构,它可以存储不同类型的数据(尽量保存的是统一种的类型)
案例
A=[1,'xiaoWang','a',[2,'b']]
a、lst = [1,2,3,4,5,6]#list使用[] , {}字典,()tuple
1、列表的赋值
list.append(元素) 在列表尾部追加元素
第一种
lst.append(10)#再尾部追加
#结果:[1, 2, 3, 4, 5, 6, 10]
list[index]=元素 #把index对应的值修改为值
list[index]=元素1,元素2 #默认变为元组插入该位置
list[index1,index2]=元素1,元素2 #会按位插入
list[lndex1,index2]=元素1,元素2,元素3 #会替换插入
list[lndex1,index2]=元素1 #值比位置少,不能插入,error
在前方插入/修改
第二种
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]
2、循环和随机数
a、生成随机数
第一种
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
b、列表的排序操作
#列表的排序
lst.sort() #正序
lst.sort(reverse=True) #倒序
lst.reverse() #倒序
print(lst)
c、冒泡排序
#冒泡排序
#双重循环、外层控制比较轮数,内层循环控制每轮比较次数
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)
d、嵌套列表的遍历
指的是一个列表的元素又是一个列表 【遍历的区别】
案例一:
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)
3、列表常用循环
列表常用循环
lst=['王','李','张','刘','陈','杨','黄','吴','赵','周']
lst2=lst.copy() #赋值给指定的值
print(lst2)
list.reverse(lst) #即将列表反序输出
print(lst)
4、 选择排序
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]
idx=y
else:
lst[idx]=lst[x]
lst[x]=tmp
print(lst)
注释
5、插入排序
#插入排序:刚开始一个元素,即为有序,每次加入一个元素,形成新的系列,应用
#插入元素的逻辑,使其继续有序
第一种
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)
第二种
#插入排序
#在一个有序数组中插入值并保持顺序
arr=[10,20,52,64,68,98,259]
a=int(input('请输入一个整数:')) #如果时》259则顺序,若小于则需要从后向前
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)
二、元组
元素的元素不可修改,使用()包裹元素
1、基本使用
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)) #元组转为列表【常用】
三、字典
一种存储数据的容器,每一个元素由键值对构成
1、基本操作
d={"name":"吴亦凡","mouth":5,"result":"强奸"} #json字符串 键值对
a、set用法
set
dct={'c','d','s','c'} #当大括号内没有键值对时,使用的是set(无序集合),特点是“去重”
print(dct)
print(type(dct))
b、案例
案例
d={"name":"吴亦凡","mouth":5,"result":"强奸"} #json字符串 键值对
print(d['name'])
print(d["mouth"])
#print(d['how']) 不存在时,报错
print(d.get('how'))#使用get方式,返回NONE None
d['name']='羊总'
print(d) #{'name': '羊总', 'mouth': 5, 'result': '强奸'}
d['how']='2021-11' #当修改不存在的值时,直接再元数据上添加 {'name': '羊总', 'mouth': 5, 'result': '强奸', 'how': '2021-11'}
print(d)
c、删除
删除
d.clear()#清空 结果:{}
del d['result'] #结果:{'name': '羊总', 'mouth': 5, 'how': '2021-11'}
print(d)
d、in/not in
d.setdefault('name','sorry')
print(d)
e、遍历
第一种:for k in keys:
print(k)
#结果
name
age
gender
id
birthday
第二种
for k in keys:
print(k+':',dct[k])
结果:
name: 张三
age: 18
gender: male
id: 10
birthday: 2022-1-10
```bash
# 四、keys()用法
```bash
dct={'name':'张三','age':18,'gender':'male','id':10}
keys=dct.keys()
print(keys) #返回列表 dict_keys(['name', 'age', 'gender', 'id'])
dct.setdefault('birthday','2022-1-10') #在获取keys之后再加,亦可以获取到新的数
print(keys) #dict_keys(['name', 'age', 'gender', 'id', 'birthday'])
五、items()用法
items=dct.items()
print(items) #结果:dict_items([('name', '张三'), ('age', 18), ('gender', 'male'), ('id', 10)])
六、values()用法
values=dct.values()
print(values) #结果: dict_values(['张三', 18, 'male', 10]) 注意 后出现的数值才会被使用
for (x,y) in items:
print(x+':',y)