Python学习笔记-基础2
1.列表list
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
1.定义列表
1 names = ["Ronaldo","Messi","Torres"] 2 data = [["cpu","i7"],["gpu","gtx1080"],["ram","16GBddr5"]]
2.访问列表内的元素。下标从0开始计数
>>> names[0] Ronaldo >>> names[-1] #倒序取 Torres >>> data[0][1] i7 >>> data[-2][0] #倒序取 gpu >>> data[-2][-1] gtx1080
3.切片操作
>>>names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"] >>>names[2:3] #取下标介于2到3之间的元素,不包含下标为2、3的元素》 ['Torres', 'Gerrard'] >>>names[:3] #等价于names[0:3] ['Ronaldo', 'Messi', 'Torres'] >>>names[2:] #取下标2到最后一个值 ['Torres', 'Gerrard', 'Suarez'] >>>names[0::2] #每隔2个元素取一次 ['Ronaldo', 'Torres', 'Suarez'] >>>names[::2 ] ['Ronaldo', 'Torres', 'Suarez'] >>>names[1::3] #从下标1开始每隔3个元素取一次 ['Messi', 'Suarez'] >>>names[1:4:2] #从下标1-4之间,每隔2个元素取一次 ['Messi', 'Gerrard']
4.追加元素
使用append()方法,在列表最后增加元素
1 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"] 2 names.append("Ronney") 3 print(names)
['Ronaldo', 'Messi', 'Torres', 'Gerrard', 'Suarez', 'Ronney']
5.插入元素
使用insert()方法
1 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"]
2 3 names.insert(3,"Griezmann") #插入在下标3之前 4 print(names) ['Ronaldo', 'Messi', 'Torres', 'Griezmann', 'Gerrard', 'Suarez']
1 names.insert(0,"Griezmann") #插入在下标0之前 2 print(names) ['Griezmann', 'Ronaldo', 'Messi', 'Torres', 'Griezmann', 'Gerrard', 'Suarez']
6.修改元素
names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"] names[2] = "Bale" #按照下标号码修改 print(names) ['Ronaldo', 'Messi', 'Bale', 'Gerrard', 'Suarez'] names[2] = ["Bale"] #注意如果写了括号相当于传了一个列表进入 print(names) ['Ronaldo', 'Messi', ['Bale'], 'Gerrard', 'Suarez']
7.删除元素
使用del()/remove()/pop()方法
names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"] del names[0] #删除对应下标元素 names.remove("Messi") #删除指定元素 print(names) ['Torres', 'Gerrard', 'Suarez']
names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"] names.pop() #删除最后一个元素 names.pop(1) #删除对应下标 print(names) ['Ronaldo', 'Torres', 'Gerrard']
8.扩展
使用extend()方法
1 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"] 2 names2 = ["Bale","Higuaín"] 3 4 names.extend(names2) 5 print(names) ['Ronaldo', 'Messi', 'Torres', 'Gerrard', 'Suarez', 'Bale', 'Higuaín']
9.统计元素、获取下标
count统计元素个数
1 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez","Messi"] 2 3 count = names.count("Messi") 4 print(count) 5 #输出结果:2
index获取元素下标
1 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez","Messi"] 2 3 index = names.index("Messi") 4 print(index) #输出结果:1 只返回第一个找到的下标
10.翻转列表
使用reverse()方法
1 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"] 2 3 names.reverse() 4 print(names) ['Suarez', 'Gerrard', 'Torres', 'Messi', 'Ronaldo']
11.排序
使用sort()方法
1 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"] 2 3 names.sort() 4 print(names) ['Gerrard', 'Messi', 'Ronaldo', 'Suarez', 'Torres'] #按照字母顺序
注意:Python3里不同数据类型不能放在一起排序
这样的列表使用sort方法排序会报错 names = ["Ronaldo","Messi","Torres","Gerrard","Suarez",1,2]
12.复制
copy.copy 称为浅copy.... 所谓浅copy就是对引用的拷贝
copy.deepcopy 称为深copy... 所谓深copy就是完成拷贝一个副本
1 import copy 2 a=['hello',[1,2,3]] 3 b=copy.copy(a) 4 c=copy.copy(a) 5 6 a[0]='world' 7 a[1].append(4) 8 print(a) 9 print(b) 10 print(c)
['world', [1, 2, 3, 4]]
['hello', [1, 2, 3, 4]]
['hello', [1, 2, 3]]
通过输出结果发现,浅copy的列表b,由于a列表进行中的第二个元素列表进行了修改,b列表随着a改变。c列表完全是最初a列表的副本,不受a变化的影响。
2.元组Turple
元组不能修改,只能查询,又叫只读列表
元组只有Count和Index方法
1 names = ("Ronaldo","Messi","Torres","Gerrard","Suarez") 2 print(names) ('Ronaldo', 'Messi', 'Torres', 'Gerrard', 'Suarez')
1 count = names.count("Ronaldo") 2 index = names.index("Ronaldo") 3 print(count,index) 1 0
3.字符串String
常用操作
1 str = "helloworld" 2 3 str.capitalize() #首字母大写,输出结果Helloworld 4 str.casefold() #大写全部转小写 5 str.center(15,"*") #输出 ***helloworld** 6 str.count('l') #统计字符串种出现的次数,输出结果为3 7 str.encode() #将字符串编码成bytes格式 8 str.endswith("ld") #判断结尾是否以“ld”结尾,输出结果为True 同理有startwith()方法
1 str.index('e') #返回e所在字符串的索引 2 str.isalnum() #是否为字母数字 3 str.isdigit() #判断是否整数 4 str.isnumeric() #是否为数字 5 str.isprintable() #是否可打印 6 str.isspace() #是否为空格 7 str.istitle() #是否为标题 8 str.isupper() #是否全为大写 9 str.isalpha() #是否是字母,带数字之类的为False 10 str.islower() #是否全为小写 11 str.isdecimal() #是否包含十进制数字 12 str.isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则
13 str.swapcase() #大小写互换
#jion()方法,以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 str = "-"; seq = ("a", "b", "c") # 字符串序列 print(str.join( seq )) 输出:a-b-c
#split() 方法,以string为分隔符,分割字符串 str = "Helloworld" m = str.split("o") #split("o",2)可设置最大分割次数 print(m) #输出 ['Hell', 'w', 'rld']
1 str.strip() #去掉字符串左右两边的空格,lsrtip()即只去除左边的空格 2 str.find("o") #检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-14 str.rfind("o") #类似于 find()函数,但是从右边开始查找.
#partition 把字符串分割成一个3元素 元组 str = "Helloworld" m = str.partition("o") print(m) #输出 ('Hell', 'o', 'world')
1 #ljust(),填充字符串,同理还有rjust()方法 2 str = "Helloworld" 3 m = str.ljust(15,"*") 4 print(m) # 输出 Helloworld*****
1 #replace()方法,新字符串替代旧字符串 2 str = "Helloworld" 3 m = str.replace("Hello","Nihao") 4 print(m) 5 6 #输出 Nihaoworld
4.字典Dict
字典是一种key - value 的数据类型,无序,key必须是唯一的,可储存任意类型对象。
定义一个字典
1 d = {"name1":"Michael ", 2 "name2":"Trevor", 3 "name3":"Franklin "}
常用操作
#增加 d["name4"]=["Niko"] >>>{'name2': 'Trevor', 'name3': 'Franklin ', 'name4': ['Niko'], 'name1': 'Michael '} #修改 d["name1"]=["Niko"] >>>{'name3': 'Franklin ', 'name2': 'Trevor',, 'name1': ['Niko']} #删除 d.pop("names") d.popitem() #随机删除 del d["name1"] #查找 #A in B 字符串、列表、字典等都可以使用 >>>d = {"name":["Michael ","Trevor","Franklin "]} >>>"name1" in d True # key不存在,就报错 #获取value >>>d["name1"] Michael #若key不存在会报错 >>>d.get("name1") Michael #若key不存在返回None
其他方法
1 #获取Value 2 d.values() 3 dict_values(['Franklin ', 'Michael ', 'Trevor']) 4 5 #获取Key 6 d.keys() 7 dict_keys(['name2', 'name1', 'name3'])
1 #update 把一个字典的键值添加到另外一个字典里 2 d = {"name1":"Michael ", 3 "name2":"Trevor", 4 "name3":"Franklin "} 5 6 d2 = {"name4":"Niko"} 7 d.update(d2) 8 print(d) 9 {'name1': 'Michael ', 'name2': 'Trevor', 'name4': 'Niko', 'name3': 'Franklin '} 10 11 #setdefault 查找键值, 键不存在时,设置默认键值 12 d = {"name1":"Michael ", 13 "name2":"Trevor", 14 "name3":"Franklin "} 15 16 m = d.setdefault("name1","Niko") 17 t = d.setdefault("name4","Niko") 18 print(m) 19 print(t) 20 #输出Michael 21 #输出Niko
1 # 函数以列表返回可遍历的(键, 值) 元组数组 2 d = {"name1":"Michael ", 3 "name2":"Trevor", 4 "name3":"Franklin "} 5 u = d.items() 6 print(u) 7 dict_items([('name2', 'Trevor'), ('name3', 'Franklin '), ('name1', 'Michael ')])
字典循环
1 #方法1 2 for key in info: 3 print(key,info[key]) 4 5 #方法2 6 for k,v in info.items(): #会先把dict转成list,数据里大时莫用 7 print(k,v)
5.集合Set
集合是无序、不重复的,与数学意义上的集合有相似之处
定义一个集合
1 a = set([1,2,6,8,9]) 2 b = set(["what","where","when"]) 3 print(a) 4 print(b) {8, 1, 2, 6, 9} {'when', 'where', 'what'}
常用操作
set1 = set([1,2,6,8,9]) set2 = set([3,6,9]) a = set1 | set2 #求并集 a = set1.union(set2) print(a) {1, 2, 3, 6, 8, 9} a = set1 & set2 #求交集 a = set1.intersection(set2) print(a) {9, 6} a = set1 - set2 #求差集 a = set1.difference(set2) print(a) {8, 1, 2} a = set1 ^ set2 #求对称差集,即获得两个集合不交叉的元素 a = set1.symmetric_difference(set2) {1, 2, 3, 8} ################ set1 = set([1,2,6,8,9]) set2 = set([6,9]) a = set1 >= set2 #集合1是否包含集合2 等价于issuperset()方法 b = set1 <= set2 #集合2是否包含集合1 等价于 issubset()方法 print(a) print(b)
基本操作
set1 = set([1,2,6,8,9]) #增加 set1.add(5) #输出{1, 2, 5, 6, 8, 9} #增加多项 set1.update([5,10]) #输出{1, 2, 5, 6, 8, 9, 10} #删除 set1.remove(6) # 若元素不存在会报错 set1.discard(6) # 若元素不会报错 #输出{8, 1, 2, 9} set1.pop() #随机删