1.列表list
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
1.定义列表
names = ["Ronaldo","Messi","Torres"]
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()方法
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()方法
names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"]
names2 = ["Bale","Higuaín"] names.extend(names2)
print(names)
['Ronaldo', 'Messi', 'Torres', 'Gerrard', 'Suarez', 'Bale', 'Higuaín']
9.统计元素、获取下标
count统计元素个数
names = ["Ronaldo","Messi","Torres","Gerrard","Suarez","Messi"] count = names.count("Messi")
print(count)
#输出结果:2
index获取元素下标
names = ["Ronaldo","Messi","Torres","Gerrard","Suarez","Messi"] index = names.index("Messi")
print(index)
#输出结果:1 只返回第一个找到的下标
10.翻转列表
使用reverse()方法
names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"] names.reverse()
print(names)
['Suarez', 'Gerrard', 'Torres', 'Messi', 'Ronaldo']
11.排序
使用sort()方法
names = ["Ronaldo","Messi","Torres","Gerrard","Suarez"] names.sort()
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就是完成拷贝一个副本
import copy
a=['hello',[1,2,3]]
b=copy.copy(a)
c=copy.copy(a) a[0]='world'
a[1].append(4)
print(a)
print(b)
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方法
names = ("Ronaldo","Messi","Torres","Gerrard","Suarez")
print(names)
('Ronaldo', 'Messi', 'Torres', 'Gerrard', 'Suarez')
count = names.count("Ronaldo")
index = names.index("Ronaldo")
print(count,index)
1 0
3.字符串String
常用操作
str = "helloworld" str.capitalize() #首字母大写,输出结果Helloworld
str.casefold() #大写全部转小写
str.center(15,"*") #输出 ***helloworld**
str.count('l') #统计字符串种出现的次数,输出结果为3
str.encode() #将字符串编码成bytes格式
str.endswith("ld") #判断结尾是否以“ld”结尾,输出结果为True 同理有startwith()方法
str.index('e') #返回e所在字符串的索引
str.isalnum() #是否为字母数字
str.isdigit() #判断是否整数
str.isnumeric() #是否为数字
str.isprintable() #是否可打印
str.isspace() #是否为空格
str.istitle() #是否为标题
str.isupper() #是否全为大写
str.isalpha() #是否是字母,带数字之类的为False
str.islower() #是否全为小写
str.isdecimal() #是否包含十进制数字
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']
str.strip() #去掉字符串左右两边的空格,lsrtip()即只去除左边的空格
str.find("o") #检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1 str.rfind("o") #类似于 find()函数,但是从右边开始查找.
#partition 把字符串分割成一个3元素 元组
str = "Helloworld"
m = str.partition("o")
print(m)
#输出 ('Hell', 'o', 'world')
#ljust(),填充字符串,同理还有rjust()方法
str = "Helloworld"
m = str.ljust(15,"*")
print(m)
# 输出 Helloworld*****
#replace()方法,新字符串替代旧字符串
str = "Helloworld"
m = str.replace("Hello","Nihao")
print(m) #输出 Nihaoworld
4.字典Dict
字典是一种key - value 的数据类型,无序,key必须是唯一的,可储存任意类型对象。
定义一个字典
d = {"name1":"Michael ",
"name2":"Trevor",
"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
其他方法
#获取Value
d.values()
dict_values(['Franklin ', 'Michael ', 'Trevor']) #获取Key
d.keys()
dict_keys(['name2', 'name1', 'name3'])
#update 把一个字典的键值添加到另外一个字典里
d = {"name1":"Michael ",
"name2":"Trevor",
"name3":"Franklin "} d2 = {"name4":"Niko"}
d.update(d2)
print(d)
{'name1': 'Michael ', 'name2': 'Trevor', 'name4': 'Niko', 'name3': 'Franklin '} #setdefault 查找键值, 键不存在时,设置默认键值
d = {"name1":"Michael ",
"name2":"Trevor",
"name3":"Franklin "} m = d.setdefault("name1","Niko")
t = d.setdefault("name4","Niko")
print(m)
print(t)
#输出Michael
#输出Niko
# 函数以列表返回可遍历的(键, 值) 元组数组
d = {"name1":"Michael ",
"name2":"Trevor",
"name3":"Franklin "}
u = d.items()
print(u)
dict_items([('name2', 'Trevor'), ('name3', 'Franklin '), ('name1', 'Michael ')])
字典循环
#方法1
for key in info:
print(key,info[key]) #方法2
for k,v in info.items(): #会先把dict转成list,数据里大时莫用
print(k,v)
5.集合Set
集合是无序、不重复的,与数学意义上的集合有相似之处
定义一个集合
a = set([1,2,6,8,9])
b = set(["what","where","when"])
print(a)
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() #随机删