Python3中列表,元组,字典,集合的简要分析,简介和相关操作
python数据结构:
1.列表 :相当于一个容器,里边可以存放多个数据(可以不同类型),一次可以处理多个数据,变量只能存放一个数据, 一次只能存放一个数据
在列表中存值(添加数据):
list.append() 在列表的末尾一次性添加一个数据
list.append([]) ,list.append(()),list.append({})添加列表,元组,字典时相当于添加一个数据
list.extend([]) 在列表的末尾一次性添加多个数据,要以列表形式添加,在列表中也可嵌套元组,字典
list.insert(插入位置,插入数据) 在指定位置(下标)添加一条数据,其余数据后移,不会覆盖原数据。
插入数据可以是字符串,列表,元组,字典,不过都相当于一个数据。
列表的运算:
list1+list2=两个列表拼接成一个列表
list*数字(只能是与整数或者被赋予整数的变量相乘) 乘几就是在一个列表中重复输出几次list的元素
列表的判断:
in:判断某一个元素在不在列表中 在 True 不在 False 格式: if 需要判断的元素 in 列表:
not in:判断某一个元素在不在列表中 在True 不在False 格式: if 需要判断的元素 not in 列表:
在列表中删除数据:
list.remove(指定元素) 要是没有指定要删除的元素,则报错
list.pop(指定下标) 如果括号内不写则默认删除列表最后一个元素
list.clear() 清空该列表所有元素
查找元素:
len(list) 查长度
list.index() 根据元素查下标,要是列表中有相同元素,则输出该元素最小的下标(即第一个出现该元素的位置),要是列表内没有要查找的元素则报错
list.count()查找元素在列表中出现的个数
截取(切片):
list[a:b] a,b为列表下标
list[a:b] 截取从a-b之间的元素,不包含最大值b
list[:b] 截取从0到b之间的元素,不包含最大值b
list[a:] 截取从a到len(list[])-1之间的元素
list[a::b] 截取从a到len(list[])-1之间的元素, a>0 正截(左边开始) a<0 反截(右边开始) b代表步长 b>0 正加(往右边走) b<0 反加(往左边走)
排序:
list.sort[] 升序 从小到大
list.reverse[] 倒序,只是把列表元素反过来输出,不是降序 想降序必须先list.sort[]升序后再list.reverse[]
复制:
在程序当中运行内存一般包括两块内容
栈:整数,小数,布尔存栈
堆:字符串,列表等等全在堆存储
变量存栈,值存堆
=复制的是地址值,一个改变会影响另一个(浅拷贝就是只拷贝栈中对应堆中的地址)
list.copy() 复制的数据,不会影响(深拷贝就是直接找到堆中的数据赋予另一个变量)
这里存在一个逻辑问题(很重要):
在.py中分别运行下边两个代码块:
① a=[1,2,3,4] ② a=[1,2,3,4]
b=a b=a.copy()
b[0]=2 b[0]=2
print(a,b) print(a,b)
观察区别(先别看下边的解释):
这个题理解之后我们再看另外一道题:
*********(待补充)**********
列表的特点:
1.列表单词是list[]
2.列表是可变的
3.列表中可以存储不同类型的数据
4.列表有下标
列表的遍历: 一个一个获取
while 循环变量是下标
for 循环变量是列表中的元素
age_list=[1,2,3,4,5,6,7,8,9] #创建一个叫age_list的列表
print(len(age_list))#查看列表中有多少个元素,获取列表长度
print(age_list[3])#获取所填下标的元素(数据)
练习:
#添加
i=0 # 下标变量
sum=0 #求和变量
while i<=len(age_list)-1:
sum += age_list[i]
i+=1
print(sum)
print(max(age_list))
list=[1,2,3]
list.append(10)
list.append([10,20])
list.extend([30,40])
list.insert(1,2000)
print(list)
小练习:从键盘录入成绩,输入负数结束。
list1=[]
sum=0
while True:
age=int(input('请输入年龄:'))
if age<0:
print('输入错误,程序结束')
break
else:
list1.append(age)
sum+=age
print('最大值:',max(list1))
print(sum)
print(list1)
#删除
list2=[1,2,3,4,5,'a','b']
list2.remove('a')
print(list2)
list2.pop(2)
print(list2)
list2.pop()
print(list2)
list2.clear()
print(list2)
#复制 复制这有一个考点 注意看代码和运行结果 上边基础知识我大概讲了一下
list3=[1,2,3]
list4=list3
list4[0]=200
print(list4)
print(list3)
list4=list3.copy()
list4[0]=10
print(list4)
print(list3)
#遍历
list5=['a','b','c','d','e']
i=0
while i<len(list5):
print(list5[i],end=' ')
i+=1
print()
#此处的i为下标
for i in list5:
print(i,end=' ')
#此处的i为列表中的元素
2.元组
1.元组的单词是tuple 标志是()
2.元组一旦创建不可更改
3.元组操作:截取 查找(长度,下标,次数)拼接+ 重复* 复制
4.元素特点:因为不能修改,所以比较安全
5.元组和列表可以互相转换
6.元素是有序的
#创建一个元组
tuple1=()
print(type(tuple1))
#创建一个有多个数据的元组
tuple2=(1,2,3,4)
print(tuple2)
#创建一个数据的元组
tuple3=(1,) #此处的逗号必须加上,不写则为整数类型
print(tuple3)
#截取(切片)
print(tuple2[1:])
tuple4=(1,2,"a","b")
print(tuple4.index(2))
print(tuple4.count("a"))
#拼接
tuple5=("c","d")
tuple6=tuple4+tuple5
print(tuple6)
#复制 因为元组内容不能修改,所以没有列表中复制那个考点
tuple7=tuple5
print(tuple7)
#转换
tuple8=("a","b","c")
list1=list(tuple8)
list1[0]="aa"
print(list1)
print(tuple8)
tuple9=tuple(list1)
print(tuple9)
3.字典:是一个键值对形式的数据结构
字典是没有下标的
字典是无序的
字典的键是唯一的
字典dict 标志是{}
添加数据 dict['键']=值 dict.updata({'键':值})
删除数据 dict.pop('键') 只能根据键进行删除 括号内不写报错
print(dic.get('键')) 字典中有对应的值时 输出,否则输出None
字典的遍历:
不能用whlie遍历 因为没有下标
只能用for遍历
# 创建字典
dic={"张三":100,"李四":0,"asd":1,"abc":2}
print(dic["张三"])
print(dic)
# 在字典中添加值
dic["王五"]=90
dic.update({"aaa":30})
# 根据键去删除
dic.pop("李四")
# dic.pop() 因为字典是无序的,到底谁是最后一个不知道,会报错
print(dic)
print("----------------")
# 报错
# print(dic["张三1"])
# None空值 不报错
print(dic.get("张三1"))
#遍历键
for i in dic:
print(i)
#根据键得到值
for i in dic:
# print(dic[i])
print(dic.get(i))
#遍历键
for i in dic.keys():
print(i)
#遍历值
for i in dic.values():
print(i)
#遍历键和值
for i,j in dic.items():
print(i,j)
4.集合
*********待补充********
作为刚刚学习python3的菜鸟,我只是把我每天学习的内容分享出来,由于水平还有限,一些题的解题方法,用目前所学的知识解起来都显得比较笨拙与复杂,不过也没办法,谁让这是老师的要求不能用后边的知识呢,毕竟用目前所学的知识解题有很大的局限性,随着课程的学习,我会回过头重新来过,用新的知识去写解题方法。如果我的笔记有任何问题,请及时与我联系,我会及时更改,谢谢。