In [7]:
''' 1.2 1.Python基础_1.2_序列及通用操作 序列分类:可变序列list,不可变序列tuple,str '''
Out[7]:
'\n1.2 1.Python基础_1.2_序列及通用操作\n序列分类:可变序列list,不可变序列tuple,str\n'
In [6]:
x = 1 print(x,type(x)) x = 2 print(x,type(x)) x = 'Hello' print(x,type(x))
1 <class 'int'> 2 <class 'int'> Hello <class 'str'>
In [4]:
x = ['a','b','c','d'] print(x[0]) print(x[1]) print(x[2]) print(x[3])
a b c d
In [8]:
# 判断值是否属于序列 lst = [1,2,3,4,5,6,7,8] a,b,c = 1,2.0,'abc' print(a in lst) print(b in lst) print(c in lst)
True True False
In [12]:
#序列连接与重复,序列是有顺序的,顺序是严格不变的 lst1 = [1,2,3] lst2 = ['a','b','c'] print(lst1 + lst2) print(lst2 + lst1) lst1.append(lst2) print(lst1) print(lst1 * 3) print(lst2 * 3)
[1, 2, 3, 'a', 'b', 'c'] ['a', 'b', 'c', 1, 2, 3] [1, 2, 3, ['a', 'b', 'c']] [1, 2, 3, ['a', 'b', 'c'], 1, 2, 3, ['a', 'b', 'c'], 1, 2, 3, ['a', 'b', 'c']] ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
In [14]:
# 下标索引 print(lst) print(lst[0],lst[1],lst[2]) print(lst[-1],lst[-2],lst[-3])
[1, 2, 3, 4, 5, 6, 7, 8] 1 2 3 8 7 6
In [19]:
# 切片 print(lst) print(lst[2:5]) #切片可以理解成列表的值空间,且是一个左闭右开的区间 print(lst[3:5]) print(lst[:5]) print(lst[5:])
[1, 2, 3, 4, 5, 6, 7, 8] [3, 4, 5] [4, 5] [1, 2, 3, 4, 5] [6, 7, 8]
In [26]:
# 步长 print(lst) print(lst[2:7:2]) print(lst[:6:3]) #从lst[0]开始,步长为3 print(lst[1::2]) #从lst[1]开始,步长为2 print(lst[::2]) #从lst[0]开始,步长为2
[1, 2, 3, 4, 5, 6, 7, 8] [3, 5, 7] [1, 4] [2, 4, 6, 8] [1, 3, 5, 7]
In [29]:
# 序列基本的全局函数 lst = [9,8,7,6,5,4,3,2,1,0] print(len(lst)) print(max(lst)) print(min(lst)) print(sum(lst)) #函数 print(lst.index(9)) #方法 lst1 = [1,1,2,2,2,2,3,3,3,3,5,5,5,4,4,5] print(lst1.count(2))
10 9 0 45 0 4
In [32]:
x1 = [1,2,3,[1],[1,1]] print(x1.count(1)) x2 = [1,2,5,1,'1','1'] print(x2.count(1)) x3 = [45,67,89,45,34,22,1] print(x3.index(45)) x4 = [1,2,3,4,5,6,7,8] print(type(x1)) print(type(x2)) print(type(x1[0])) print(type(x1[3])) print(type(x1[-1])) print(type(x1[2:4]))
1 2 0 <class 'list'> <class 'list'> <class 'int'> <class 'list'> <class 'list'> <class 'list'>
In [33]:
''' 1.2.2, 列表list的常用操作 列表是Python中最基本的数据结构,它支持字符、数字、字符串,甚至可以包含列表(即嵌套) 列表用[]标识,是python最常用的复合型数据结构 列表中的值的切片也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认从0开始,从右到左索引默认从-1开始,下标可以为空表示取到头部 加号+是列表连接运算符,星号*是重复操作 '''
Out[33]:
'\n1.2.2, 列表list的常用操作\n列表是Python中最基本的数据结构,它支持字符、数字、字符串,甚至可以包含列表(即嵌套)\n列表用[]标识,是python最常用的复合型数据结构\n列表中的值的切片也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认从0开始,从右到左索引默认从-1开始,下标可以为空表示取到头部\n加号+是列表连接运算符,星号*是重复操作\n'
In [39]:
# 列表的特征 lst1 = [1,2,3,'a','b',[0],[1,[1,2,3],'name'],2] # 可包含任意类型的对象:数据、字符串、列表等 print(lst[2]) 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) # 可原位改变 lst6_1 = [1,2,3] lst6_2 = ['1','2','3'] print(type(lst6_1)) print(type(lst6_2)) lst6_3 = lst6_1 + lst6_2 print(lst6_3) lst6_3.append('ok') print(lst6_3)
3 143 43 43 [1, 2, 3, 1, 2, 3, 1, 2, 3] [10, 101, 102] <class 'list'> <class 'list'> [1, 2, 3, '1', '2', '3'] [1, 2, 3, '1', '2', '3', 'ok']
In [42]:
# 列表与生成器 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)) #通过list()函数生成列表 print(lst) m = range(10) print(m[2],m[5],m[-1]) # range可以索引
range(0, 5) <class 'range'> [0, 1, 2, 3, 4]
In [45]:
# 可变列表list常用操作--添加元素 lst = list(range(10)) print(lst + [1,2,3]) print(lst) #lst不变 lst.append(['a','b','c']) print(lst) #append 改变lst的值,列表作为整体添加 lst.extend(['a','b','c']) print(lst) #extend 改变lst的值,列表作为独立元素添加 a = [1,2,3] b = [3,4,5] a.append(b) print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ['a', 'b', 'c']] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ['a', 'b', 'c'], 'a', 'b', 'c'] [1, 2, 3, [3, 4, 5]]
In [47]:
# 可变列表list常用操作--删除元素 lst = ['Jack','Jack','Tom','Tracy','Alex','White'] print(lst) lst.remove('Jack') print(lst) # .remove方法:移除裂变中某个值的第一个匹配项 del lst[3:5] print(lst) # del 语句:删除list的相应索引值 lst.clear() print(lst) # .clear 移除所有
['Jack', 'Jack', 'Tom', 'Tracy', 'Alex', 'White'] ['Jack', 'Tom', 'Tracy', 'Alex', 'White'] ['Jack', 'Tom', 'Tracy'] []
In [49]:
# 可变列表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) #插入一个列表元素 lst1 = [1,2,3,4,5,6] lst1.insert(0,'m') print(lst1) #按 shit + tab按键,显示函数的功能
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 'a', 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 'a', 3, [1, 2, 3], 4, 5, 6, 7, 8, 9] ['m', 1, 2, 3, 4, 5, 6]
In [51]:
# 可变列表list常用操作--复制 x = list(range(10)) print(x) m = x n = x.copy() print(m) x[2] = 101 print(x) print(m) print(n)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 101, 3, 4, 5, 6, 7, 8, 9] [0, 1, 101, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [54]:
# 可变列表list常用操作--排序 lst1 = list(range(10,20)) lst2 = ['a','d','b','c'] lst1.sort() lst2.sort() lst3 = lst2.copy() lst3.sort(reverse=True) print(lst1,lst2,lst3) #.sort() 方法 lst4 =sorted(lst3) print(lst3,lst4) # sorted: 排序并赋值的函数
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19] ['a', 'b', 'c', 'd'] ['d', 'c', 'b', 'a'] ['d', 'c', 'b', 'a'] ['a', 'b', 'c', 'd']
In [57]:
# tuple, 不可变的“列表” tup1 = ('physics','chemistry',1997,2000); tup2 = (1,2,3,4,5); tup3 = 'a','b','c'; #可以不加括号 tup4 = (50,) # 元组中只包含一个元素时,需要在元素后面添加逗号 # del tup3() #元组不可以删除元素,但可以删除整个元组 print(tup1[2],tup3[:2]) #索引,切片,与list一样 print(tup1 + tup2) print(tup1 * 3) print(max(tup2),min(tup2)) #序列通用函数 # 元组不可做元素的添加,删除,排序 lst = list(range(10)) tup5 = tuple(lst) lst5 = list(tup5) #tuple函数,将列表转换为元组 print(tup5) print(lst5)
1997 ('a', 'b') ('physics', 'chemistry', 1997, 2000, 1, 2, 3, 4, 5) ('physics', 'chemistry', 1997, 2000, 'physics', 'chemistry', 1997, 2000, 'physics', 'chemistry', 1997, 2000) 5 1 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [58]:
''' 1.2.3 文本序列str常用操作 字符串是Python中最常用的数据类型,我们可以使用引号('',"")来创建字符串 字符串也是序列,文本序列,不可变序列 '''
Out[58]:
'\n1.2.3 文本序列str常用操作\n字符串是Python中最常用的数据类型,我们可以使用引号(\'\',"")来创建字符串\n字符串也是序列,文本序列\n'
In [62]:
# 字符串引号 str1 = 'abc' str2 = "abc" str3 = 'My name is "Test"' # 双引号单引号无区别,但文本中有引号的时候要相互交替使用 str4 = '''hello! how are you? I`m fine, thank you''' # 需要多行字符串时候要用三引号''',''' print(str1) print(str2) print(str3) print(str4)
abc abc My name is "Test" hello! how are you? I`m fine, thank you
In [66]:
# 转义字符:\ print('\'','\"') #\' \": 分别输出单引号,双引号 print('hello\nhow do you do?') # \n 空行 print('\\') #输出\,所以文件路径常用/,或者\\ print("C:/User/Desktop") print("C:\\User\\Desktop") print(r"C:\User\Desktop") # r 用于去转义,让括号里面的转义字符失效
' " hello how do you do? \ C:/User/Desktop C:\User\Desktop C:\User\Desktop
In [69]:
# 字符串作为序列的通用功能 print('a' in 'abc') # in/not in:判断是否存在 print('abc' + 'def') #文本连接 print('abc' * 4) #文本复制 st = 'abcdefg' print(st[2],st[-1]) print(st[:2]) print(st[::2]) #索引,切片,步长 print(st.index('g')) #.index()方法 print('st长度为:',len(st)) #计算字符串长度 print('st长度为:' + str(len(st))) #字符串连接 #print('st长度为:' + len(st)) # 字符串与数值不可连接,除非转换为字符串
True abcdef abcabcabcabc c g ab aceg 6 st长度为: 7 st长度为:7
In [92]:
# 字符串常用功能 st1 = "i`m handsome" st2 = st1.replace('handsome','ugly') print(st1) print(st2) st3 = 'hahaha' print(st3) st4 = st3.replace('ha','he') print(st4) st5 = st3.replace('ha','he',2) #只更换前两个 print(st5) st = 'pie,32,2321,1.5432' st6 = st.split(',') print(st6) # str.split(obj):拆分字符串,生成列表 # 拆分字符串很重要,爬虫,透过split分离为列表 lst = ['pie','32','2321','1.5432'] m = '-' st = m.join(lst) print(st) # str.join(obj):连接字符串,对象为列表 st = 'abcdefg' print(st.startswith('a'),st.endswith('f')) # str.startswith("str")判断是否以“str”开头;# str.endswith("str")判断是否以“str”结尾 st = 'aBDEAddrdjjiex' print(st.upper()) # 全部大写 print(st.lower()) #全部小写 print(st.swapcase()) #大小写互换 print(st.capitalize())#首字母大写 st = '1234567' print(st.isnumeric()) #如果string只包含数字则返回True,否则返回False st = 'asdsd' print(st.isalpha()) #如果string只包含字母则返回True,否则返回False st = '123 ' print(st.rstrip()) #删除字符末尾的空格
i`m handsome i`m ugly hahaha hehehe heheha ['pie', '32', '2321', '1.5432'] pie-32-2321-1.5432 True False ABDEADDRDJJIEX abdeaddrdjjiex AbdeaDDRDJJIEX Abdeaddrdjjiex True True 123
In [99]:
# 格式化字符:在字符串中插入变量 name = "FIREBIRD" 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,%z,%f 都是格式化字符串,s/i/f分别代表插入字符串的源数据类型:整型/字符型/浮点型
FIREBIRD is 好人 this is 4 this is hehe this is 4.200000
In [113]:
# 格式化字符:数字格式化的那些坑 m = 3.1415926 print("pi is %f"%m) print("pi is %.2f"%m) #保留2位小数%.2f,此处是四舍五入 m = 10.6 print("pi is %i"%m) #%i 不会四舍五入,直接切去小数部分 print("pi is %.0f"%m) # %.0f 会进行四舍五入 m = 100 print("pi is %+i"%m) #显示正号,符号根据数字直接显示 print("pi is %.2f"%-0.01) m = -100 print("pi is %+i"%m) #显示正号,符号根据数字直接显示 print("pi is %.2f"%0.01) m = 100 print("pi is % +i"%m) print("pi is % .2f"%0.01) #加空格,空格和正号只能显示一个 m = 123.123223212324222322 print("pi is %2e"%m) print("pi is %4E"%m) #科学计数法,%e,%E m1 = 12312434322.123223212324222322 m2 = 1.2 print("pi is %g"%m1) print("pi is %g"%m2) print("pi is %.2g"%m1) #%g:当小数位比较少的时候用用浮点数,数据复杂的时候用科学计数法 # %.2g:用两个有效位数
pi is 3.141593 pi is 3.14 pi is 10 pi is 11 pi is +100 pi is -0.01 pi is -100 pi is 0.01 pi is +100 pi is 0.01 pi is 1.231232e+02 pi is 1.231232E+02 pi is 1.23124e+10 pi is 1.2 pi is 1.2e+10
In [129]:
# 更强大的格式化方法:format print("User ID:{0}".format("root")) print("今天天气怎么样:{}".format("非常好")) st = "您好!{}" print(st.format("谢谢")) print("{} hehe {}".format("a","b")) # {}这里代表占位符,其中可以有数字,也可以没有 print("{}{}{}".format("a","b","c"),'\n', "{0}{1}{2}{0}".format('a','b','c'),'\n') #print("{}{}{}".format('a','b','c')) #{}和{0}的区别:都是占位符,后者有了明确指定 print("我的工作是{work}".format(work = 'Design')) # 也可以用变量来指示 x = "abc{}" a = x.format("def") print(a,x,'\n') # .format()并不生成新的值 print("{:f}".format(4,123),'\n', "{:.2f}".format(4,123),'\n', "{:e}".format(4,123),'\n', "{:.0f}".format(99.9),'\n', "{:%}".format(4,123),'\n', "{:d}".format(10),'\n') print("今年产值增长了%.2f%%"%10.321) #添加百分号 print("今年产值增长了{:.2%}".format(10.321)) #添加百分号
User ID:root 今天天气怎么样:非常好 您好!谢谢 a hehe b abc abca 我的工作是Design abcdef abc{} 4.000000 4.00 4.000000e+00 100 400.000000% 10 今年产值增长了10.32% 今年产值增长了1032.10%