2.列表的查询操作
'''创建列表的第一种方式,使用[]''' lst=['hello','world',98,'hello'] print(lst.index('hello'))#如果列表中有相同元素只返回列表中相同元素的第一个元素的索引 #print(lst.index('Python'))#ValueError #print(lst.index('hello',1,3)) '''创建列表的第二种方式,使用内置函数list()''' print(lst.index('hello',1,4)) lst=['hello','world',98,'hello','world',234] print(lst[2]) print(lst[-3]) print(lst[10])#IndexError list indexout of range
print('------获取列表多个元素,切片-------') lst=[10,20,30,40,50,60,70,80] print('原列表',id(lst)) lst2=lst[1:6:1] print('切的片段',id(lst2)) print(lst[1:6]) print(lst[1:6:]) print(lst[1:6:2]) print(lst[:6:2]) print(lst[1::2]) print('------step步长是负数的情况--------') print('原列表:',lst) print(lst[::-1]) #start=7,stop 省略 step=-1 print(lst[7::-1])
print('------元素是否在列表中-------') lst=[10,20,30,40,50,60,70,80] print(10 in lst) print(100 not in lst) print('------列表元素的遍历-------') for item in lst: print(item)
3.列表元素的增、删、改操作
print('------在列表末尾添加元素-------') lst=[10,20,30] print('before',lst,id(lst)) lst.append(100) print('after',lst,id(lst)) #在任意位置上添加一个元素 lst.insert(1,90) print(lst) lst3=[True,False,'hello'] #在任意位置上添加N多个元素 lst[1:]=lst3 print(lst)
lst=[10,20,30,40,50,60,30] lst.remove(30)#从列表中一处一个元素,如果有重复只移除第一个元素 print(lst) #lst.remove(100)#VlaueError:list.remove(x):x not in list #pop()根据索引移除元素 lst.pop(1) print(lst) #lst.pop(5) #IndexError :pop index out of range 如果索引位置不存在,将抛出异常 lst.pop()#如果不指定参数(索引),将删除列表中的最后一个元素 print(lst) print('-------切片操作-删除至少一个元素,将产生一个新的列表对象------') new_list=lst[1:3] print('原列表',lst) print('切片后的列表',new_list) '''不产生新的列表对象,而是删除原列表中的内容''' lst[1:3]=[] print(lst) '''清楚列表中的所有元素''' lst.clear() print(lst) '''del语句将列表对象删除''' del lst print(lst) #name 'lst' is not defined
lst=[10,20,30,40] #一次修改一个值 lst[2]=100 print(lst) lst[1:3]=[300,400,500,600] print(lst)
4.列表元素的排序
lst=[20,40,10,98,54] print('排序前的列表',lst,id(lst)) #开始排序,调用列表的对象的sort方法,升序排序 lst.sort() print('排序后的列表',lst,id(lst)) #通过指定的关键字参数,将列表的元素进行降序排序 lst.sort(reverse=True)#reverse=True 表示降序排序,reverse-false就是升序排序 print(lst) lst.sort(reverse=False) print(lst) print('---------使用内置函数sorted()对列表进行排序,将产生一个新的列表对象-------') lst=[20,40,10,98,54] print('原列表',lst) #开始排序 new_list=sorted(lst) print(lst) print(new_list)
5.列表推导式
lst=[i*i for i in range(1,10)] print(lst) '''列表中的元素的值2,4,6,8,10''' lst2=[i*2 for i in range(1,6)] print(lst2)
第七章 夫妻站
0.本章总结
1. 什么是字典
2.字典的原理
3.字典的创建与删除
'''使用{}创建字典''' scores={'张三':100,'李四':98,'王五':45} print(scores) print(type(scores)) '''第二种创建dict()''' student=dict(name='jack',age=20) print(student)
4.字典的查询操作
scores={'张三':100,'李四':98,'王五':45} '''第一种方式,使用[]''' print(scores['张三']) #print(scores['陈六']) #KeyError:‘陈六’ '''第二种方式,使用get()方法''' print(scores.get('张三')) print(scores.get('陈六')) print(scores.get('麻七',99))
5.字典元素的增、删、改操作
scores={'张三':100,'李四':98,'王五':45} '''key的判断''' print('张三' in scores) print('张三' not in scores) del scores['张三']#删除指定的key-value对 #scores.clear() #清空字典的元素 print(scores) scores['陈6']=98 #新增元素 print(scores) scores['陈6']=100#修改元素 print(scores)
scores={'张三':100,'李四':98,'王五':45} #获取所有的key keys=scores.keys() print(keys) print(type(keys)) print(list(keys))#将所有的key组成的试图转换成列表 #获取所有的value values=scores.values() print(values) print(type(values)) print(list(values)) #获取所有的key=value对 items=scores.items() print(items) print(list(items))
scores={'张三':100,'李四':98,'王五':45} #字典元素的遍历 for item in scores: print(item,scores[item],scores.get(item))
6.字典推导式
items=['Fruits','Books','Others'] prices=[96,78,85,100,120] d={item.upper():price for item,price in zip(items,prices)} print(d)
第八章 是排还是散
0.本章总结
1.什么是元组
2.元组的创建方式
'''第一种创建方式,使用()''' t=('python','world',98) print(t) print(type(t)) t2='python','world',98 print(t2) print(type(t2)) t3='python', print(t3) print(type(t3)) '''第二种创建方式,使用内置函数tuple()''' tl=tuple(('python','world',98)) print(tl) '''空元组的创建方式''' '''空列表的创建方式''' lst=[] lst1=list() d={} d2=dict() #空元组 t4=() t5=tuple() print('空列表',lst,lst1) print('空字典',d,d2) print('空元组',t4,t5)
t=(10,[20,30],9) print(t) print(type(t)) print(t[0],type(t[0]),id(t[0])) print(t[1],type(t[1]),id(t[1])) print(t[2],type(t[2]),id(t[2])) '''尝试t[1]修改为100''' print(id(100)) #t[1]=100 #元组是不允许修改元素的 '''由于[20,30]列表,而列表是可变序列,所以可以向列中添加元素,而列表的内存地址不变''' t[1].append(100)#向列表中添加元素 print(t)
3.元组的遍历
'''元组的遍历''' t=('python','world',98) '''第一种获取元组元组的方式,使用索引''' print(t[0]) print(t[1]) print(t[2]) #print(t[3]) #tuple index out of range '''遍历元组''' for item in t: print(item)
4.什么是集合
5.集合的创建
'''第一种创建方式使用{}''' s={2,3,4,5,6,7,8,9}#集合中的元素不允许重复 print(s) '''第二种创建方式是使用set()''' s1=set(range(6)) print(s1,type(s1)) s2=set([1,2,3,4,5,6,7,7]) print(s2,type(s2)) s3=set((1,2,4,4,5,65))#集合中的元素是无序的 print(s3,type(s3)) s4=set('python') print(s4,type(s4)) s5=set({12,4,34,55,66,44,4}) print(s5,type(s5)) '''定义一个空集合''' s6={} #dict字典类型 print(type(s6)) s7=set() print(type(s7))
6.集合的增、删、改、查操作
#集合的相关性操作 s={10,20,30,40,400,60} '''集合元素的判断操作''' print(10 in s)# true print(100 in s) print(10 not in s) print(100 not in s) '''集合元素的新增操作''' s.add(80) print(s) s.update({200,400,300})#一次至少添加一个元素 print(s) s.update([100,99,8]) s.update((78.64,56)) print(s) '''集合元素的删除操作''' s.remove(100) print(s) #s.remove(500) #KeyError: 500 s.discard(500) s.discard(300) print(s) s.pop() s.pop() #s.pop(400)#set.pop() takes no arguments (1 given) print(s) s.clear() print(s)
s={10,20,30,40} s2={30,40,20,10} print(s==s2) print(s!=s2) '''一个集合是否是另外一个集合的子集''' s1={10,20,30,40,50,60} s2={10,20,30,40} s3={10,20,90} print(s2.issubset(s1)) print(s3.issubset(s1)) '''一个集合是否是另外一个集合的超集''' print(s1.issuperset(s2)) print(s1.issuperset()) '''两个集合是否含有交集''' print(s2.isdisjoint(s3)) s4={100,200,300} print(s2.isdisjoint(s4))
'''两个集合是否含有交集''' print(s2.isdisjoint(s3)) s4={100,200,300} print(s2.isdisjoint(s4)) '''交集''' print(s1.intersection(s2)) print(s1 & s2)# 与上面一行是等价的 '''并集''' print(s1.union(s2)) print(s1|s2) #与上面是一样等价的 '''差集''' print(s1.difference(s2)) print(s1-s2) print(s1) print(s2) '''对称差集''' print(s1.symmetric_difference(s2)) print(s1^ s2)
7.集合生成式
lst=[i*i for i in range(10)] print(lst) '''集合生成式''' s={i*i for i in range(10)} print(s)
sp:列表、字典、元组、集合总结
第九章 一串连一串
0.本章总结
1.字符串驻留机制
在这里插入代码片a='python' b="python" c='''python''' print(a,id(a))#1784692440496 print(b,id(b))#1784692440496 print(c,id(c))#1784692440496
2.字符串的常用操作
s='hello,hello' print(s.index('lo'))#3 print(s.find('lo'))#3 print(s.rfind('lo'))#9 print(s.rindex('lo'))#9 #print(s.index('k'))#substring not found print(s.find('k'))#-1 #print(s.rindex('k'))#substring not found print(s.rfind('k'))#-1
s='hello,python' a=s.upper()#转成大写之后,会产生一个新的字符串对象 print(a,id(a)) print(s,id(s)) b-=s.lower()#转换之后,会产一个新的字符串对象 print(b,id(b)) print(s,id(s)) print(b==s) print(b is s)#False s2='hello,python' print(s2.swapcase()) print(s2.title())
s='hello,python' '''居中对齐''' print(s.center(20,'*')) '''左对齐''' print(s.ljust(20,'*')) print(s.ljust(10)) print(s.ljust(20)) '''右对齐''' print(s.rjust(20,'*')) print(s.rjust(20)) print(s.rjust(10)) '''右对齐,使用0进行填充''' print(s.zfill((20))) print(s.zfill(10))
s='hello world python' lst=s.split() print(lst) s1='hello|world|python' print(s1.split(sep='|')) print(s1.split(sep='|',maxsplit=1)) print('---------------------') '''rsplit()从右侧开始劈分''' print(s.rsplit()) print(s1.rsplit('|')) print(s1.rsplit(sep='|',maxsplit=1))
s='hello,python' print('1.',s.isidentifier()) print('2.','hello'.isidentifier()) print('3.','张三_'.isidentifier()) print('4','张三_123'.isidentifier()) print('5','\t'.isspace()) print('6.','abc'.isalpha()) print('7.','张三'.isalpha()) print('8.','张三1'.isalpha()) print('9','123'.isdecimal()) print('10.','123四'.isdecimal()) print('11.','123'.isnumeric()) print('13.','123四'.isnumeric()) print('14','abc1'.isalnum()) print('16.','张三123'.isalnum()) print('17.','abc!'.isnumeric())
s='hello,python' print(s.replace('python','java')) s1='hello,python,python,python' print(s1.replace('python','java',2)) lst=['hello',java,python] print('|'.join(lst)) print('',join(lst)) t=('hello','java','python') print('',join(t))
3.字符串的比较
print('apple'>'app') print('apple'>'banana') print(ord('a'),ord('b')) print(ord('杨')) print(chr(97),chr(98)) print(chr(26472)) '''==与is的比较 ==比较的是value is 比较的是id是否相等''' a=b='python' c='python' print(a==b) print(b==c) print(a is b) print(a is c) print(id(a))#2559352137840 print(id(b))#2559352137840 print(id(c))#2559352137840
4.字符串的切片比较
s='hello,python' s1=s[:5] s2=s[6:] s3='!' newtr=s1+s3+s2 print(s1) print(s2) print(newstr) print('--------------------------') print(id(s)) print(id(s1)) print(id(s2)) print(id(s3)) print(id(newstr)) print('--------切片[start:end:step]----------------') print(s[1:5:1])#从1开始截取到5(不包含5),步长为1 print(s[::2]) print(s[::-1])#默认从字符串最后一个元素开始,到字符串的第一个元素结束,因为步长是负数
5.格式化字符串
#(1) %占位符 name='张三' age=20 print('我叫%s,今年%d岁' % (name,age)) #(2) {} print('我叫{0},今年{1}岁'.format(name,age)) #f-string print(f'我叫{name},今年{age}岁') print('%10d' % 99) print('%.3f' % 3.1415926) print('%10.3f' % 3.1415926) print('hellohello') print('{0:.3}'.format(3.1415926)) print('{0:.3f}'.format(3.1415926))
6.字符串的编码转换
s='天涯共此时' print(s.encode(encoding='GBK')) #一个中文占两个字节 print(s.encode(encoding='UTF-8'))#在UTF-8这种编辑格式中,一个中文占三个字节 #解码 #byte代表就是一个二进制数据(字节类型的数据) byte=s.encode(encoding='GBK') print(byte.decode(encoding='GBK')) byte=s.encode(encoding='UTF-8') print(byte.decode(encoding='UTF-8'))
第十章 水晶球不调用不动
0.本章总结
1.函数的创建和调用
def calc(a,b): c=a+b return c result=calc(10,20) print(result)
2.函数的参数传递
3.函数的返回值
def fun(num): odd=[]#存奇数 even=[]#存偶数 for i in num: if i%2: odd.append(i) else: even.append(i) return odd,even #函数的调用 lst=[10,29,34,23,44,53,55] print(fun(lst)) '''函数的返回值 1)如果函数没有返回值【函数执行完毕之后,不需要给调用处提供数据】 2)函数的返回值,如果是一个,直接返回类型 3)函数的返回值,如果是多个,返回的结果为元组 ''' def fun1(): print('hello') #return fun1() def fun2(): return 'hello' res=fun2() print(res) def fun3() return 'hello','world' print(fun3()) ''' 函数在定义时,是否需要返回值,就视情况而定'''
4.函数的参数定义
def fun(a,b=10): print(a,b) #函数的调用 fun(100) fun(20,30) print() print('hello',end='\t') print('world')
def fun(*args): print(args) #print(args[0]) fun(10) fun(10,30) fun(30,405,50) def fun1(**args): print('hello','world','java') #def fun2(*args,*a):#以上代码,程序会报错,因为可变参数只能是定义一个 #def fun2(**args,**args):#以上代码,程序会报错,因为可变参数只能定义一个 def fun2(*args1,**args2):#程序可以运行 pass #def fun2(**args1,*arg2)#报错 # pass 在一个函数的定义过程中,既有个数可变的关键字形参,要求,个数可变的位置形参,放在个数可变的关键字形参之前
def fun(a,b,c):#a,b,c在函数的定义处,所以是形式参数 print('a=',a) print('b=',b) print('c=',c) #函数的调用 fun(10,20,30)#函数调用时的参数传递,称为位置传参 lst[11,22,33] fun(lst)#错误 fun(*lst)#在函数调用时,将列表中的每一个元素都转换为位置实参传入 print('---------------') fun('a=100,c=100,b=200')#函数的调用,所以是关键字实参 fun(**dic)#在函数调用的时候,将字典中的键值对都转换为关键字实参传入 print(-------------------------------------------------------) def fun(a,b=10):#b是在函数的定义处,所以b是形参,而且进行了赋值,所以b称为默认值形参 print('a=',a) print('b=',b) def fun2(*args):#个数可变的位置形参 print(args) def fun3(**args2):#个数可变的关键字形参 print(args2) fun2(10,20,30,40)#个数不限 fun3(a=11,b=22,c=33,d=44,e=55)#个数不限 def fun4(a,b,*,c,d):#从*之后的参数,在函数调用的时候,只能采用关键字参数传递 print('a=',a) print('b=',b) print('c=',c) print('d=',d) #调用fun4 函数 #fun4(10,20,30,40)#位置实参传递 #fun4(a=10,b=20,c=30,d=40)#关键字实参传递 fun4(10,20,c=30,d=40)#前两个参数,采用的是位置实参传递,而c,d采用的是关键字实参传递 '''需求,c、d只能采用关键字实参传递''' '''函数定义时的形参的顺序问题''' def fun5 (a,b,*,c,d,**args):#就可以这样定义 pass def fun6(*args,**args2):#就可以这样定义 pass def fun7(a,b=10,*args,**args2):#可以定义 pass