''' 【课程3.2】 序列通用操作 序列分类:可变序列list,不可变序列tuple、str ''' # 判断值是否属于序列 lst = [1,2,3,4,5,6] a,b = 1,10 print(a in lst) # a 在 lst 序列中 , 如果 x 在 y 序列中返回 True。 print(b not in lst) # b 不在 lst 序列中 , 如果 x 不在 y 序列中返回 True。 # 序列链接与重复 lst1 = [1,2,3] lst2 = ['a','b','c'] print(lst1+lst2) # "+":序列的链接 print(lst1*3,lst2*2) # "*":序列重复 # 下标索引 lst = [1,2,3,4,5,6,7,8,9,0] print(lst[0],lst[2],lst[9]) # 索引从0开始,eg lst[2]中,下标索引是2,指向lst的第3个值 print(lst[-1]) # 索引-1代表最后一个值 #print(lst[10]) # 这里一共有10个值,所以最大索引是9 # 切片 lst = [1,2,3,4,5,6,7,8,9,0] print(lst[2:5]) # 切片可以理解成列表的值区间,且是一个左闭右开区间,这里lst[2:5]代表的区间是:索引2的值 - 索引4的值 print(lst[:5]) # 左边无索引,代表从索引0开始 print(lst[4:]) # 右边无索引,代表以最后一个值结束 print(lst[5:-1]) # 索引5的值 - 倒数第二个值 (切片是右闭区间,注意了) # 步长 lst = [1,2,3,4,5,6,7,8,9,0] print(lst[0:5:2]) # List[i:j:n]代表:索引i - 索引j,以n为步长 print(lst[::2]) # 按照2为步长,从第一个值开始截取lst数据 print(lst[1::2]) # 按照2为步长,从第二个值开始截取lst数据 # 序列的基本内置全局函数 lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] print(len(lst)) # 列表元素个数 print(max(lst), min(lst), sum(lst)) # 返回列表的最大值、最小值、求和,这三个函数都只针对数字的list print(lst.index(3)) # .index(obj)方法:从列表中找出某个值第一个匹配项的索引位置 lst = [1, 1, 2, 3, 3, 4, 4, 4, 4, 5, 6] print(lst.count(4)) # .count(obj)方法:计算值的出现次数 ''' 【课程3.3】 列表list常用操作 序列是Python中最基本的数据结构,它支持字符,数字,字符串甚至可以包含列表(即嵌套) 列表用 [ ] 标识,是 python 最通用的复合数据类型。 列表中值的切片也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。 加号 + 是列表连接运算符,星号 * 是重复操作 ''' # 列表的特征 lst1 = [1,2,3,'a','b','c',[1,2,3]] # 可包含任意类型的对象:数值、字符串、列表等 lst2 = [143,56,894,67,43] print(lst2[0],lst2[4],lst2[-1]) # 通过下标索引访问序列中的值 → 序列的顺序是不能改变的,通过索引来定位列表的元素 lst3 = [1,2,3] lst3 = lst3 * 3 print(lst3) # 可随意变换列表长度,相当于随意指定新的列表 lst4 = [1,2,['a','b']] # 可嵌套 lst5 = [100,101,102] lst5[0] = 10 print(lst5) # 可原位改变 # 列表与生成器 print(range(5),type(range(5))) # range()是生成器,指向了一个范围 # range(5)代表指向了0,1,2,3,4这几个值 # range(2,5)代表指向了2,3,4这几个值,注意这里不是使用: # range(0,10,2)代表指向了0,2,4,6,8这几个值,最后的2代表步长 lst = list(range(5)) print(lst) # 通过list()函数生成列表 # 可变列表list常用操作 - 添加元素 lst = list(range(10)) lst.append('hello') print(lst) # list.append() 添加元素 lst.append(['a','b','c']) print(lst) lst.extend(['a','b','c']) print(lst) # 添加多个元素用.extend()方法:用新列表扩展原来的列表,注意和append()方法的区别 # 可变列表list常用操作 - 删除元素 lst = ['Jack','Jack','Tom','Tracy','Alex','White'] lst.remove('Jack') print(lst) # .remove方法:移除列表中某个值的第一个匹配项 del lst[3:5] print(lst) # del语句:删除list的相应索引值 lst.clear() print(lst) # 移除所有值 # 可变列表list常用操作 - 插入元素 lst = list(range(10)) print(lst) lst.insert(3,'a') print(lst) # x.insert(i,m)方法:在索引i处插入m,这里索引3代表第四个值 lst.insert(5,[1,2,3]) print(lst) # 插入一个列表元素 # 可变列表list常用操作 - 复制 lst = list(range(10)) lst1 = lst lst1[2] = 'hello' print(lst,lst1) # lst,lst1指向同一个列表 lst = list(range(10)) lst2 = lst.copy() lst2[2] = 'hello' print(lst,lst2) # list.copy()方法:复制一个新的列表,lst,lst2指向两个列表(虽然两个列表值相同) # 可变列表list常用操作 - 排序 lst1 = [12,45,32,98,45,66,3] lst2 = ["asd", "cxv", "ghv"] lst1.sort() lst2.sort() print(lst1,lst2) # 默认升序排序/字母顺序 lst1.sort(reverse=True) lst2.sort(reverse=True) print(lst1,lst2) # 参数reverse:反向排序,针对数字 lst3 = sorted(lst1) lst3.append('hello') print(lst1,lst3) # 函数sorted():排序并复制 # 讲一讲元祖tuple :不可变的“列表” tup1 = ('physics', 'chemistry', 1997, 2000); tup2 = (1, 2, 3, 4, 5 ); tup3 = "a", "b", "c", "d" # 可以不加括号 tup4 = (50,) # 元组中只包含一个元素时,需要在元素后面添加逗号 print(tup1[2],tup3[:2]) # 索引、切片和list一样 del tup3 # 元祖不能单独删除内部元素(不可变性),但可以del语句来删除整个元祖 #print(tup3) print(len(tup1)) print(tup1 + tup2) print(tup4 * 3) print(max(tup2),min(tup2)) # 序列通用函数 lst = list(range(10)) tup5 = tuple(lst) print(tup5) # tuple()函数:将列表转换为元组 ''' 【课程3.4】 文本序列str常用操作 字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串 字符串也是序列:文本序列 ''' # 字符串引号 str1 = "abc" str2 = 'abc' str3 = 'my name is "fatbird"' # 双引号单引号无区别,但文本中有引号的时候要相互交替使用 str4 = '''hello! how are you? I`m fine, thank you.''' # 需要多行字符串时候用三引号 ''' ''',""" """ # 转义字符:\ print('\'', '\"') # \',\" :分别输出单引号,双引号 print('hello\nhow do you do?') # \n:空行 print('\\') # 输出\,所以文件路径用“/”或者“\\” # 序列通用功能 print('a' in 'abc') # in/not in :判断是否存在 print('我很帅' + "没错") # 文本连接 print('handsome '*4) # 文本复制 st = 'abcdefg' print(st[2],st[-1]) print(st[:2]) print(st[::2]) # 索引、切片、步长 print(st.index('g')) # .index()方法 print('st长度为:',len(st)) # 计算字符串长度(思考这里能否把逗号换为"+") # 字符串常用功能 st = "i`m handsome!" st2 = st.replace('handsome','ugly') print(st) print(st2) st = 'hahaha' st2 = st.replace('ha','he',2) print(st2) # str.replace(old,new,count):修改字符串,count:更换几个 st = "poi01,116.446238,39.940166" lst = st.split(',') print(lst) # str.split(obj):拆分字符串,生成列表 lst = ['poi01', '116.446238', '39.940166'] m = '-' st = m.join(lst) print(st) # str.join():连接字符串,对象为序列 st = 'abcdefg' print(st.startswith('a'), st.endswith('f')) # str.startswith(“str”) 判断是否以“str”开头;str.endswith (“str”) 判断是否以“str”结尾 st = 'aBDEAjc kLM' print(st.upper()) # 全部大写 print(st.lower()) # 全部小写 print(st.swapcase()) # 大小写互换 print(st.capitalize()) # 首字母大写 st = '1234567' print(st.isnumeric()) # 如果 string 只包含数字则返回 True,否则返回 False. st = 'DNVAK' print(st.isalpha()) # 如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False st = 'avd ' print(st.rstrip()) # 删除字符末尾的空格 # 格式化字符:在字符串中插入变量 name = "FATBIRD" truth = "%s is 好人" %name print(truth) # %s 表示我们这里要插入一个变量(字符串),%name代表这里我们插入name → 所以,两个%解决问题 x = 4 y = "hehe" z = 4.2 print("this is %i" %x) print("this is %s" %y) print("this is %f" %z) # %s的s有什么含义:%s %z %f都是格式化字符串,s/i/f分别代表插入字符串的源数据类型:整型/字符型/浮点型 # 格式化字符:数字格式化的那些坑 m = 3.1415926 print("pi is %f" %m) print("pi is %.2f" %m) # 我只想输出2位小数:%.2f,此处是四舍五入! m = 10.6 print("pi is %i" %m) print("pi is %.0f" %m) # 区别:%i 不四舍五入,直接切掉小数部分 m = 100 print("have fun %+i" %m) print("have fun %.2f" % -0.01) # 显示正号,负号根据数字直接显示 m = 100 print("have fun % i" %m) print("have fun % +i" %m) print("have fun % .2f" %-0.01) # 加空格,空格和正好只能显示一个 m = 123.123123123 print("have fun %.2e" %m) print("have fun %.4E" %m) # 科学计数法 %e %E m1 = 123.123123123 m2 = 1.2 print("have fun %g" %m1) print("have fun %g" %m2) # 小数位数少的时候自动识别用浮点数,数据复杂的时候自动识别用科学计数法