赞
踩
说明:本篇文章为作者复习阶段观看网课所写笔记,如有侵权,请联系作者删除。
创建列表
1.创建列表的第一种方式,使用[]
- lst1 = ['hello','world',98,789]
-
- print(lst1)
-
- #列表元素按顺序有序排列
-
- print(lst1[0])
-
- #索引对应唯一的元素:索引可以是正数(从0开始);也可以是负数(从-1开始)
-
- print(lst1[-1],lst1[-4])
2.创建列表的第二种方式,使用内置函数list()
- lst2 = list(['china','home',123])
-
- print(lst2)
-
- #列表元素按顺序有序排列
-
- print(lst2[1])
-
- #负数从最后一个开始往前递减(即最后一个是-1,倒数第二个是-2,以此类推)
-
- print(lst2[-3])
-
- #列表任意的数据类型可以混存
-
- #根据需要动态分配和回收内存(即使用前不需要定义内存大小,使用后不需要释放内存)
列表的查询操作:(单个元素)
1.获取列表中指定元素的索引
如果列表中存在N个相同元素,只返回相同元素中第一个元素的索引
如果查询的元素在列表中不存在,则会抛出ValueError
还可以在指定的start和top之间进行查找
2.获取列表中的单个元素
正向索引从0到N-1
逆向索引从-N到-1
指定索引不存在,抛出indexError
- #创建一个列表(其中有相同元素)
-
- #lst = ['hello','world',98,'hello']
-
- #print(lst.index('hello')) #输出0
-
- #index()函数获取括号内元素的索引(即元素在列表中的序号)
-
- #print(lst.index('Python'))
-
- #查找的元素不在列表中,ValueError
-
- #print(lst.index('hello',1,3)) #从列表中索引为1的元素开始查找,直到索引为3的元素为止(不包括3)
-
- #输出ValueError错误,1-3(不包括3)中的元素没有hello
-
- #创建一个列表
-
- lst2 = ['hello','world',98,'world',234]
-
- #获取索引为2的元素
-
- print(lst2[2])
-
- #获取索引为-3的元素
-
- print(lst2[-3])
-
- #获取索引为10的元素
-
- print(lst2[10]) #输出IndexError错误
列表的查询操作:(多个元素)
1.获取列表中的多个元素:切片
2.语法格式:列表名[start:stop:step]
3.切片操作:
#切片的结果:原列表片段的拷贝
#切片的范围:[start,stop) 左闭右开
#step默认为1,简写为[start,stop]
#step为正数,从start开始往后计算切片
#step为负数,从start开始往后计算切片
- lst=[10,20,30,40,50,60,70,80]
-
- #start=1.stop=6,step=1
-
- #print(lst[1:6:1]) #输出结果为[20,30,40,50,60]
-
- print('原列表',id(lst))
-
- lst2=lst[1:6:1]
-
- print('切的片段',id(lst2))
-
- print(lst[1:6]) #默认步长为1
-
- #start=1;stop=6;step=2
-
- print(lst[1:6:2])
-
- #stop=6;step=2;start采用默认
-
- print(lst[:6:2]) #start默认为0
-
- #start=1;step=2;stop采用默认
-
- print(lst[1::2]) #stop默认到最后
-
- print('----------------------------step为负数的情况----------------------------------------')
-
- print('原列表:',lst)
-
- print(lst[::-1]) #逆序输出原列表
-
- #start=7;stop省略;step=-1
-
- print(lst[7::-1])
-
- #strat=6;stop=0;step=-2
-
- print(lst[6:0:-2])
列表元素的判断及遍历
1.判断指定元素在列表中是否存在
- print('p' in 'python') #判断p在python中,输出结果为True
-
- print('k' not in 'python') #判断k不在python中,输出结果为True
-
-
-
- lst=[10,20,'python','hello']
-
- print(10 in lst) #True
-
- print(100 in lst) #False
-
- print(10 not in lst) #False
-
- print(100 not in lst) #True
2.列表元素的遍历
- for item in lst:
-
- print(item)
列表元素的增加操作
#append()在列表的末尾添加一个元素,在原列表末尾添加,并不创建新的列表
- lst1=[10,20,30]
-
- print('添加元素之前:',lst1,id(lst1))
-
- lst1.append(100)
-
- print('添加元素之后:',lst1,id(lst1))
#extend()在列表的末尾至少添加一个元素
- lst2=['hello','world']
-
- #lst1.append(lst2) #将lst2整体作为一个元素添加到lst1的末尾
-
- lst1.extend(lst2) #向lst1的末尾一次性添加多个元素
-
- print(lst1)
#insert()在列表的任意位置添加一个元素
- lst1.insert(1,90) #在lst1索引为1的位置之后添加元素90
-
- print(lst1)
#切片:在列表的任意一个位置添加至少一个元素,把原来的元素切掉,换上新的元素
- lst3=[True,False,'hello']
-
- lst1[1:]=lst3
-
- print(lst1)
列表元素的删除操作
#remove():一次删除一个元素;重复元素删除第一个;元素不存在抛出ValueError
- lst=[10,20,30,40,50,60,30]
-
- lst.remove(30) #删除重复元素的第一个
-
- print(lst)
-
- #lst.remove(100) #删除不存在的元素,抛出ValueError
-
- print(lst)
#pop():删除一个指定索引位置上的元素;指定索引不存在抛出IndexError;不指定索引删除列表中最后一个元素
- lst.pop(1) #删除索引为1的元素
-
- print(lst)
-
- lst.pop() #不指定索引删除列表中最后一个元素
-
- print(lst)
-
- #lst.pop(5) #指定索引不存在,抛出IndexError
-
- print(lst)
#切片:一次至少删除一个元素
- #产生新的列表 #不产生新的列表,删除原列表中的元素
-
- new_list=lst[1:3] lst[1:3]=[]
-
- print('原列表:',lst) print(lst)
-
- print('切片后:',new_list)
#clear():清空列表中的所有元素 #del:将列表删除
- lst.clear() del lst
-
- print(lst) print(lst)
列表的修改操作
#为指定索引的元素赋予一个新值 #为指定的切片赋予一个新值
- lst=[10,20,30,40] lst[1:3]=[300,400,500]
-
- #一次修改一个值 print(lst)
-
- lst[2]=100
-
- print(lst)
列表的排序操作
sort()和sorted()的区别在于:sort()是在原列表的基础上排序,sorted()是创建新列表进行排序
#sort():默认将列中的所有元素从小到大排序,也可以指定reverse=True进行降序排序
- lst=[20,40,10,98,54]
-
- print('排序前的列表:',lst,id(lst))
-
- #调用sort(),默认升序,没有产生新的列表
-
- lst.sort()
-
- print('排序后的列表:',lst,id(lst))
-
- #通过指定关键字参数reverse=True,将列表中的元素进行降序排序
-
- lst.sort(reverse= True) #reverse=True 表示升序排序
-
- print(lst)
-
- lst.sort(reverse= False) #reverse=False 表示降序排序
-
- print(lst)
#sorted():指定reverse=True,进行降序排序,原列表不发生改变,产生新的列表
- lst=[20,40,10,98,54]
-
- print('原列表:',lst)
-
- #开始排序
-
- new_list=sorted(lst)
-
- print(lst)
-
- print(new_list )
-
- #指定关键字参数,实现降序排序
-
- desc_list=sorted(lst,reverse=True)
-
- print(desc_list )
列表生成式
1.列表中的元素是1,2,3,4,5,6,7,8,9
- lst=[i for i in range(1, 10)]
-
- print(lst)
2.列表中的元素是 1,4,9,16,25,49,64,81 3.列表中的元素是2,4,6,8,10
- lst=[i*i for i in range(1, 10)] lst2=[i*2 for i in range(1,6)]
-
- print(lst) print(lst2)
1.列表 [] 有序序列,第一个放入列表的元素索引就是1
2.字典 {} 无序序列,第一个放入字典的元素索引不一定就是1,可利用hash()
3.列表和字典都是可变序列,即都可进行增删改
4.字典是以键值对的方式存储数据的
5.字典名={'键':值,'键':值,'键':值}
6.scores={'张三':100,'李四':99,'王五':98}
创建字典 字典的创建方式:使用花括号{};使用内置函数dict()
1.使用{}创建字典 3.创建空字典
- scores={'张三':100,'李四':98,'王五':45} d={}
-
- print(scores) print(d) #输出{}
-
- print(type(scores)) #类型是dict
2.使用内置函数dict()创建字典 4.使用字典生成式创建
- student=dict(name='jack',age=20)
-
- print(student)
-
- print(type(student)) #类型是dict
获取字典中的元素
字典中元素的获取:通过键获取与其对应的值 1.scores['张三'] 2.scores.get('张三')
- scores={'张三':100,'李四':98,'王五':45}
-
- #第一种方式:使用[] print(scores['张三']) #输出100
-
- #第二种方式:使用get()
-
- print(scores.get('李四')) #输出98
-
- print(scores.get('陈六')) #输出None
-
- print(scores.get('麻七',99)) #输出99;99是在查找‘麻七’所对的value不存在时,提供的一个默认值
字典的增删查改操作
- scores={'张三':100,'李四':98,'王五':45}
-
- #键(key)的判断
-
- print('张三' in scores ) #张三在scores中,输出True
-
- print('张三' not in scores ) #张三不在scores中,输出False
-
- #字典元素的删除
-
- #通过删除指定的键(key),从而删除整个键值对(key-value)
-
- del scores['张三'] #删除指定键值对
-
- print(scores) #输出{'李四': 98, '王五': 45}
-
- #scores.clear() #将字典中的所有元素都删除
-
- #print(scores) #输出{}
-
- #字典元素的新增
-
- scores['陈六']=98
-
- print(scores) #输出{'李四': 98, '王五': 45, '陈六': 98}
-
- #字典元素的修改
-
- scores['陈六']=100 #对指定键值对进行修改
-
- print(scores) #输出{'李四': 98, '王五': 45, '陈六': 100}
-
- 获取字典视图
-
- 1.keys() 获取字典中所有key(键)
-
- 2. values() 获取字典中所有value(值)
-
- 3. items() 获取字典中所有key-value对(键值对)
-
- scores={'张三':100,'李四':98,'王五':45}
-
- #获取字典中所有key
-
- keys=scores.keys()
-
- print(keys) #输出dict_keys(['张三', '李四', '王五'])
-
- print(type(keys)) #输出<class 'dict_keys'>
-
- print(list(keys)) #将所有的key组成的视图转换成列表
-
- #获取字典中所有value
-
- values=scores.values() #输出dict_values([100, 98, 45])
-
- print(values) #输出<class 'dict_values'>
-
- print(type(values)) #将所有的value组成的视图转换成列表
-
- #获取字典中所有key-value对
-
- items=scores.items()
-
- print(items) #输出dict_items([('张三', 100), ('李四', 98), ('王五', 45)])
-
- print(type(items)) #输出<class 'dict_items'>
-
- print(list(items)) #输出[('张三', 100), ('李四', 98), ('王五', 45)];转换之后的列表元素是由元组组成的
字典元素的遍历 依次获取字典中的元素
- scores={'张三':100,'李四':98,'王五':45}
-
- for item in scores:
-
- print(item) #item代表键
-
- #根据键获取字典中的值
-
- print(scores[item])
-
- print(scores.get(item))
字典的特点
1.字典中的所有元素都是一个key-value对,key不允许重复,value可以重复
- a={'name':'张三','name':'李四'}
-
- print(a) #输出{'name': '李四'};key不允许重复
-
- b={'name':'张三','firstname':'张三'}
-
- print(b) #输出{'name': '张三', 'firstname': '张三'};value可以重复
2.字典中的元素是无序的,即无法指定某个位置插入元素
3.字典当中的key必须是不可变对象
4.字典可以根据需要,动态地伸缩
5.字典会浪费较大的内存,是一种使用空间换时间的数据结构
字典生成式
- items1=['Fruits','Books','Others'] #列表1
-
- prices1=[96,78,85] #列表2
-
- #upper()将字母全部转换为大写
-
- d1={item.upper():price for item,price in zip(items1,prices1)}
-
- print(d1) #输出{'FRUITS': 96, 'BOOKS': 78, 'OTHERS': 85}
-
-
-
- #当两个列表数据个数不匹配时,以少的为依据
-
- items2=['Fruits','Books','Others'] #列表1
-
- prices2=[96,78,85,100,500] #列表2
-
- d2={item.upper():price for item,price in zip(items2,prices2)}
-
- print(d2) #输出{'FRUITS': 96, 'BOOKS': 78, 'OTHERS': 85}
元组
1.元组:Python内置的数据结构之一,是不可变序列
2.元组() 列表[] 字典{}
3.不可变序列:字符串、元组;没有增删改的操作
4.可变序列:列表、字典;可以对序列执行增删改操作,对象地址不发生改变
- #列表
-
- lst=[10,20,45]
-
- print(id(lst))
-
- lst.append(300) #在原列表中增加元素300
-
- print(id(lst)) #增加元素前后列表的地址没有改变
-
-
-
- #字符串
-
- s='hello'
-
- print(id(s))
-
- s=s+' world'
-
- print(id(s)) #增加元素前后字符串的地址发生改变
-
- print(s)
创建元组
1.第一种,直接使用小括号
- t=('Python','world',98)
-
- print(t)
-
- print(type(t)) #输出<class 'tuple'>
-
- #第一种方式可以省略小括号
-
- n='Python','world',98
-
- print(n)
-
- print(type(n)) #输出<class 'tuple'>
-
- #只包含一个元组的元素需要使用逗号和小括号
-
- l=(10,)
-
- print(l) #一定要加逗号
-
- print(type(l)) #输出<class 'tuple'>
-
2.第二种,使用内置函数tuple()
- m=tuple(('Python','world',98))
-
- print(m)
-
- print(type(m)) #输出<class 'tuple'>
-
- #创建空列表
-
- lst1=[]
-
- lst2=list()
-
- print('空列表',lst1 ,lst2 )
-
- #创建空字典
-
- d1={}
-
- d2=dict()
-
- print('空字典',d1 ,d2 )
-
- #创建空元组
-
- t1=()
-
- t2=tuple()
-
- print('空元组',t1 ,t2 )
-
- #为什么要将元组设计成不可变序列
-
- #在多任务环境下,同时操作对象时不需要加锁
-
- #因此,在程序中尽量使用不可变序列
-
- #注意事项:元组中存储的是对象的引用
-
- #如果元组中的对象是不可变对象,则不能再引用其它对象
-
- #如果元组中的对象是可变对象,则可变对象的引用不允许改变,但数据可以改变
-
- t=(10,[20,30],9)
-
- print(t)
-
- print(type(t))
-
- print(t[0],type(t[0]),id(t[0])) #输出10 <class 'int'>
-
- print(t[1],type(t[1]),id(t[1])) #输出[20, 30] <class 'list'>
-
- print(t[2],type(t[2]),id(t[2])) #输出9 <class 'int'>
-
- #将t[1]修改为100
-
- print(id(100))
-
- #t[1]=100 #元组不允许修改元素
-
- #由于t[1](即[20,30])是列表,而列表是可变序列,所以可以向该列表中添加元素,而列表的内存地址不变
-
- t[1].append(100) #在列表的末尾添加元素
-
- print(t) #输出(10, [20, 30, 100], 9)
-
- print(id(t)) #添加后与最初的地址相同
遍历元组 元组是可迭代对象,所有可以使用for...in进行遍历
t=('Python','world',98)
1.第一种获取元组元素的方式:使用索引
- print(t[0])
-
- print(t[1])
-
- print(t[2])
-
- #print(t[3]) #IndexError: tuple index out of range
2.第二种获取元组元素的方式:遍历元组
- for item in t:
-
- print(item)
集合创建
1.python中的内置数据结构:列表、字典、元组、集合
2.列表、字典、集合都是可变序列
3.集合是没有value的字典
4.元素放入集合的顺序并不是其索引顺序,需要使用dash()计算元素的位置
- #集合的创建方式
-
- #第一种,使用{}
-
- s={2,3,4,5,5,6,7,7}
-
- print(s) #输出{2, 3, 4, 5, 6, 7};因为集合中的元素不可以重复
-
- #第二种,使用set()
-
- s1=set(range(6)) #range(6)产生0-5的序列
-
- print(s1) #输出{0, 1, 2, 3, 4, 5}
-
- print(type(s1)) #输出<class 'set'>
-
-
-
- s2=set([1,2,3,3]) #通过set()将列表转换为集合
-
- print(s2) #输出{1, 2, 3};因为集合中的元素不可以重复
-
- print(type(s2)) #输出<class 'set'>
-
-
-
- s3=set((1,4,4,65)) #通过set()将字典转换为集合
-
- print(s3) #输出{65, 1, 4};因为集合中的元素是无序的
-
- print(type(s3)) #输出<class 'set'>
-
-
-
- s4=set('python') #通过set()将字符串转换为集合
-
- print(s4) #输出{'t', 'n', 'y', 'o', 'h', 'p'};因为集合中的元素的无序的
-
- print(type(s4)) #输出<class 'set'>
-
-
-
- s5=set({56,45,99}) #通过set()将集合转换为集合,也可直接当作集合
-
- print(s5) #输出{56, 99, 45};因为集合中的元素是无序的
-
- print(type(s5)) #输出<class 'set'>
-
-
-
- #定义空集合
-
- s6={}
-
- print(type(s6)) #输出<class 'dict'>;没有定义成功,不可以直接使用{}定义空集合
-
- s7=set()
-
- print(type(s7)) #输出<class 'set'>;定义成功
集合的数据操作
- s1={10,20,30,40}
-
- s2={20,30,40,50,60}
-
- #交集:集合A和集合B共有的元素组成的集合
-
- print(s1.intersection(s2) )
-
- print(s1 & s2) # & 与 intersection() 等价,都可以求两个集合的交集
-
-
-
- #并集:集合A+集合B
-
- print(s1.union(s2) )
-
- print(s1 | s2) # | 与 union() 等价,都可以求两个集合的并集
-
-
-
- #差集:集合A-集合B
-
- print(s1.difference(s2) ) #集合A-集合B
-
- print(s1-s2) # - 与 difference() 等价,都可以求两个集合的差集
-
-
-
- #对称差集:并集-交集
-
- print(s1.symmetric_difference(s2) )
-
- print(s1 ^ s2)
集合的运算
- #随机生成 [0,10]范围的整数,分别组成集合A和集合B
-
- #输出A和B的内容、长度、最大值、最小值以及它们的并集、交集和差集。
-
- import random
-
- def fun():
-
- List = []
-
- for j in range(5):
-
- x = random.randint(0,10)
-
- List.append(x)
-
- return set(List)
-
- A = fun()
-
- B = fun()
-
- print(str.format("集合的内容,长度,最大值,最小值分别为:\n{0} {1} {2} {3}",A,len(A),max(A),min(A)))
-
- print(str.format("{0} {1} {2} {3}",B,len(B),max(B),min(B)))
-
- print(str.format("A和B的并集,交集和差集分别为:\n{0} {1} {2} ",A|B,A&B,A-B))
-
-
-
集合间的关系
- #两个集合是否相等:可以使用==或!=进行判断;元素相同就相等
-
- s1={10,20,30,40}
-
- s2={30,40,20,10}
-
- print(s1==s2) #True
-
- print(s1!=s2) #False
-
- s3={10,20,30,40,50,60}
-
- s4={10,20,30,40}
-
- s5={10,20,90}
-
- #一个集合是否为另一个集合的子集:可以调用issubest进行判断
-
- print(s4.issubset(s3) ) #判断s4是不是s3的子集;输出True
-
- print(s5.issubset(s3) ) #判断s5是不是s3的子集;输出False
-
- #一个集合是否为另一个集合的超集:可以调用issuperset进行判断
-
- #若A是B的子集,那么B就是A的超集
-
- print(s3.issuperset(s4) ) #判断s3是不是s4的超集;输出True
-
- print(s3.issuperset(s5) ) #判断s3是不是s5的超集;输出True
-
- #两个集合是否没有交集:可以使用isdisjiont进行判断
-
- print(s3.isdisjoint(s5) ) #判断s3和s5没有交集;输出False
-
- print(s5.isdisjoint(s3) ) #与其上作用相同
-
- s6={500,900}
-
- print(s3.isdisjoint(s6) ) #判断s3和s6没有交集;输出True
列表生成式 集合生成式
- lst=[i*i for i in range(6)] s={i*i for i in range(6)}
-
- print(lst) print(s)
列表、元组、字典、集合总结
- #列表 可变 可重复 有序 []
-
- #元组 不可变 可重复 有序 ()
-
- #字典 可变 key不可重复;value可以重复 无序 {key:value}
-
- #集合 可变 不可重复 无序 {}
-
-
-
- #元组创建:使用()创建;使用内置函数tuple()
-
- #元组遍历:for...in
-
- #元组是不可变序列,无法进行增删改操作
-
-
-
- #集合创建:使用{}创建;使用内置函数set();使用集合生成式 s={i*i for i in range(6)}
-
- #集合遍历:for...in
-
- #集合新增:add()一次只删除一个元素;update()一次至少删除一个元素
-
- #集合删除:remove()若删除元素不存在抛出错误;discard()若删除元素不存在不抛出错误;pop()随机删除任意一个元素;clear()清空列表
-
- #集合是可变序列,可以进行增删改操作
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。