In [7]:
1.2 1.Python基础_1.2_序列及通用操作序列分类可变序列list不可变序列tuplestr
Out[7]:
\n1.2 1.Python基础_1.2_序列及通用操作\n序列分类可变序列list不可变序列tuplestr\n
In [6]:
x 1print(x,type(x))x 2print(x,type(x))x Helloprint(x,type(x))
1 2 Hello
In [4]:
x [a,b,c,d]print(x[0])print(x[1])print(x[2])print(x[3])
abcd
In [8]:
# 判断值是否属于序列lst [1,2,3,4,5,6,7,8]a,b,c 1,2.0,abcprint(a in lst)print(b in lst)print(c in lst)
TrueTrueFalse
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 38 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]开始步长为3print(lst[1::2]) #从lst[1]开始步长为2print(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))
10904504
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]))
120
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 * 3print(lst3)# 可随意变换列表长度相当于随意指定新的列表lst4 [1,2,[a,b]]# 可嵌套lst5 [100,101,102]lst5[0]10print(lst5)# 可原位改变lst6_1 [1,2,3]lst6_2 [1,2,3]print(type(lst6_1))print(type(lst6_2))lst6_3 lst6_1 lst6_2print(lst6_3)lst6_3.append(ok)print(lst6_3)
3143 43 43[1, 2, 3, 1, 2, 3, 1, 2, 3][10, 101, 102][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) [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 xn x.copy()print(m)x[2] 101print(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(reverseTrue)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 abcstr2 "abc"str3 My name is "Test"# 双引号单引号无区别但文本中有引号的时候要相互交替使用str4 hello! how are you?Im fine, thank you# 需要多行字符串时候要用三引号,print(str1)print(str2)print(str3)print(str4)
abcabcMy name is "Test"hello! how are you?Im 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 用于去转义让括号里面的转义字符失效
"hellohow do you do?\C:/User/DesktopC:\User\DesktopC:\User\Desktop
In [69]:
# 字符串作为序列的通用功能print(a in abc) # in/not in:判断是否存在print(abc def) #文本连接print(abc * 4) #文本复制st abcdefgprint(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)) # 字符串与数值不可连接除非转换为字符串
Trueabcdefabcabcabcabcc gabaceg6st长度为 7st长度为7
In [92]:
# 字符串常用功能st1 "im handsome"st2 st1.replace(handsome,ugly)print(st1)print(st2)st3 hahahaprint(st3)st4 st3.replace(ha,he)print(st4)st5 st3.replace(ha,he,2) #只更换前两个print(st5)st pie,32,2321,1.5432st6 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 abcdefgprint(st.startswith(a),st.endswith(f))# str.startswith("str")判断是否以“str”开头# str.endswith("str")判断是否以“str”结尾st aBDEAddrdjjiexprint(st.upper()) # 全部大写print(st.lower()) #全部小写print(st.swapcase()) #大小写互换print(st.capitalize())#首字母大写st 1234567print(st.isnumeric()) #如果string只包含数字则返回True否则返回Falsest asdsdprint(st.isalpha()) #如果string只包含字母则返回True否则返回Falsest 123 print(st.rstrip()) #删除字符末尾的空格
im handsomeim uglyhahahaheheheheheha[pie, 32, 2321, 1.5432]pie-32-2321-1.5432True FalseABDEADDRDJJIEXabdeaddrdjjiexAbdeaDDRDJJIEXAbdeaddrdjjiexTrueTrue123
In [99]:
# 格式化字符在字符串中插入变量name "FIREBIRD"truth "%s is 好人"%nameprint(truth)# %s表示我们这里需要插入一个变量(字符串)%name代表这里插入name所以两个%解决问题x 4y "hehe"z 4.2print("this is %i"%x)print("this is %s"%y)print("this is %f"%z)# %s,%z,%f 都是格式化字符串s/i/f分别代表插入字符串的源数据类型整型/字符型/浮点型
FIREBIRD is 好人this is 4this is hehethis is 4.200000
In [113]:
# 格式化字符数字格式化的那些坑m 3.1415926print("pi is %f"%m)print("pi is %.2f"%m) #保留2位小数%.2f,此处是四舍五入m 10.6print("pi is %i"%m) #%i 不会四舍五入直接切去小数部分print("pi is %.0f"%m) # %.0f 会进行四舍五入m 100print("pi is %i"%m) #显示正号符号根据数字直接显示print("pi is %.2f"%-0.01)m -100print("pi is %i"%m) #显示正号符号根据数字直接显示print("pi is %.2f"%0.01)m 100print("pi is % i"%m) print("pi is % .2f"%0.01)#加空格空格和正号只能显示一个m 123.123223212324222322print("pi is %2e"%m) print("pi is %4E"%m)#科学计数法,%e,%Em1 12312434322.123223212324222322m2 1.2print("pi is %g"%m1) print("pi is %g"%m2)print("pi is %.2g"%m1)#%g当小数位比较少的时候用用浮点数数据复杂的时候用科学计数法# %.2g:用两个有效位数
pi is 3.141593pi is 3.14pi is 10pi is 11pi is 100pi is -0.01pi is -100pi is 0.01pi is 100pi is 0.01pi is 1.231232e02pi is 1.231232E02pi is 1.23124e10pi is 1.2pi is 1.2e10
In [129]:
# 更强大的格式化方法formatprint("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 babc abca 我的工作是Designabcdef abc{} 4.000000 4.00 4.000000e00 100 400.000000% 10 今年产值增长了10.32%今年产值增长了1032.10%