| 创建 |
list = ["a", "b", "c", 1, 2, True]
list = list(range(10))
list = []
|
- 元组使用小括号来进行创建,如:tup1 =(''physics,'chemistry',1997,2000)
- 组也可以不使用小括号括住元素,如:t = 'a','b','c',1,2,3
- 如果元组只有一个元素时,必须在这个元素后增加逗号说明这是一个元组:t4 = ('see',)
- 通过 tuple()创建元组 tuple(可迭代的对象),如:
b = tuple()
print(b) # 结果:()
b = tuple('abc')
print(b) # 结果:('a', 'b', 'c')
b = tuple("1234")
print(b) # 结果:('1', '2', '3', '4')
b = tuple([1,2,3])
print(b) # 结果:(1, 2, 3)
b = tuple(1234)
print(b) # 结果:报错:TypeError: 'int' object is not iterable
|
1)使用{}符号创建集合
college1 = {"哲学","经济学","法学","教育学"}
print(college1)
# 输出没有按照定义的集合显示,每次运行显示的集合中的顺序不一样, 因为生成的哈希散列值不一样,导致存储的顺序不一样
2)使用set()函数创建集合,set()内置函数从其他数据结构转换,set1 = set(其他数据结构)
college2 = set(["金融学","哲学","经济学","历史学","文学"]) print(college2)
3)使用set创建字符串集合
college3 = set("我爱中国") print(college3)
4)空集合set1 = set() 注:set1 = {}创建的是空字典
|
dict = {'键1':'值','键2':'值','键3':'值','键4':'值'}dict = dict(键1='值',键2='值',键3='值',键4='值',键5='值')
k = ['name','age','job']
v = ['joe',28,'teacher']
d = dict(zip(k, v))
print(d)
dict4 = dict.fromkeys(["键1","键2","键3"],"N/A") # 利用序列来创建key,可以设置默认值,没有设置初始值,默认为None
print(dict4)
|
| 常用方法 |
list.append(x):将元素x增加到列表list的尾部alist = blist + clist:将列表blist和列表clist的元素依次复制到新的列表alist中list.extend(alist):将列表alist的所有元素加到列表list的尾部list.insert(index,x):在列表list的指定位置index处插入元素x,插入位置后的元素向后移动
list.remove(x):在列表list中删除首次出现的元素xlist.pop(index):删除并返回列表list指定位置index处的元素,如果不指定index,则默认是最后一个元素list.clear():删除列表list的所有元素,并不是删除列表listdel list[index]:删除列表指定位置index处的元素,若index超出返回则抛出异常list[index1:index2]=[]:删除索引在index1到index2-1内的元素
list.index(x):返回第一个元素x的索引位置,若不存在元素x则抛出异常list[index]:通过索引直接访问元素。 索引的区间在[0, 列表长度-1]这个范围。 超过这个范围则会抛出异常list[:]:提取整个列表list[start:]:从索引start开始到结尾提取列表list[:end]:从头开始到索引end-1提取列表list[start:end]:从start到end-1提取列表list[start:end:step]:从start提取到end-1,步长是step
list.count(x):返回指定元素x在列表list中出现的次数len(list):返回列表中包含元素的个数
x in list:如果元素x在列表list中,则返回True,否则返回False
修改原列表,不建新列表的排序:list.reverse():所有元素原地进行逆序排序 list.sort():所有元素原地进行升序排序(reverse = False 升序(默认)),加上排序规则reverse = True则进行降序排序建新列表的排序:blist = sorted(alist):通过内置函数 sorted()进行排序,这个方法返回新列表,不对原列表做修改blist = reversed(alist):内置函数 reversed()也支持进行逆序排列,与列表对象reverse()方法不同的是,内置函数reversed()不对原列表做任何修改,只是返回一个逆序排列的迭代器对象![]()
|
如果要对元组排序,只能使用内置函数 sorted(tupleObj)
zip(列表 1,列表 2,...)将多个列表对应位置的元素组合成为元组,并返回这个 zip 对象
a = (2,3,4,5)
b = (1,2)
print(list(zip(a, b))) # 结果:[(2, 1), (3, 2)]
获取数据,在获取数据时与列表完全相同:
print(t[5]) # 正序索引,获取第6个元素
print(t[-1]) # 倒序索引
print(t[1:4]) # 范围取值
print('b' in t ) # 成员运算符
与列表的区别:
| 列表 |
元组 |
| 内容允许扩展 |
内容不可变 |
| 内存存储动态变化 |
创建后固定不变 |
| 效率较低 |
效率较高 |
| 运行时数据需要变更时使用 |
用于保存稳定不变的数据 |
| 保存天气数据,股市数据 |
保存国家名,元素周期表 |
| 列表使用方括号,list=[‘a’,’b’,1] |
元组使用小括号,tuple=(‘a’,’b’,1) |
|
集合的数学运算 先定义两个集合:set1和 set2 1)交集 获取两个集合中重复部分,新建一个集合 c3 = set1.intersection(set2) 更新原有集合:把交集赋值给set1 set1.intersection_update(set2) 2)并集 将两个集合元素合并,去重:c4 = set1.union(set2) Python中没有并集的更新函数update 3)差集 c5 = set1.difference(set2) #表示set1在set2中不存在的部分 c6 = set1.symmetric_difference(set2) #symmetric_difference表示双向差集。既包含了set1在set2中没有出现的元素,也包含了set2在set1中没有出现的元素。 set1.difference_update(set2) #对set1进行更新操作 set1.symmetric_difference_update(set2) #对set1进行更新操作 集合间的关系操作
s1 = {1, 2, 3, 4, 5, 6}
s2 = {6, 5, 4, 3, 2, 1}
# == 判断两个集合的元素是否完全相同
print(s1 == s2)
s3 = {4, 5, 6, 7}
s4 = {1, 2, 3, 4, 5, 7, 6, 8}
# issubset判断是否为"子集"
print(s3.issubset(s4)) # s3是否为s4的子集
# issuperset判断是否为"父集"
print(s4.issuperset(s3)) # s4是否为s3的父集
s5 = {6}
s6 = {1, 3, 5, 7, 9}
# isdisjoint 函数判断两个集合是否存在重复元素
# True 代表不存在重复元素,False则代表存在重复
print(s5.isdisjoint(s6))
操作集合元素 1)集合的遍历 college1 = {"哲学", "经济学", "法学" , "教育学"} for c in college1: print(c) 2)判断元素存在 print("哲学" in college1) 3)集合不支持按索引提取数据 print(college1[3]) #会报错 4)新增数据,一次只能添加一个元素 college1.add("计算机学") 5)update方法一次添加多个元素 college1.update(["生物学" , "工程学"]) #列表也能改成元组 print(college1) 6)更新集合中的元素是要删除原有元素,再创建新元素(先remove或discard,再add) 删除元素操作: remove如果删除不存在的元素时,会报错 discard如果遇到不存在的元素时,则会忽略删除操作 7)set.clear():清空set中的所有元素
|
1)单个取值a = dict["k1"]可取到该字典中键k1对应的值;如果k1不存在,则会报错。a = dict.get("k1")如果k1存在,输出该键对于的值;如果k1不存在,会输出None。a=dict.get("k1" , "vn")如果k1存在,输出该键对于的值;如果k1不存在,会输出后面的值vn。2)判断键是否存在于字典k in dict可判断该键k是否存在于字典dict中,返回True或False。注意只判断键,不判断值。3)遍历字典
#遍历所有的键-值对 -- items()
for k,v in {1:'a',2:'b'}.items():
print(k,v)
print("-------------------")
#遍历字典中的所有键 -- keys()
for k in {'a':'b','c':'d'}.keys():
print(k)
print("-------------------")
for k in {'a':'b','c':'d'}:
print(k)
print("-------------------")
#遍历字典中的所有值 -- values()
for v in {'a':'b','c':'d'}.values():
print(v)
4)取最大最小键表达式 max({2:10,8:4,5:9}) 的结果是8。-----------字典由键值对组成,max(D)输出的是最大的键。表达式 min({2:10,8:4,5:9}) 的结果是2。-----------字典由键值对组成,min(D)输出的是最小的键。
1)新增和更新 新增和更新均可以使用update函数,秉承有则更新,无则新增的原则。
dict1.update(k1 = "v1" , k2 = "v2") 或者:dict['k'] = "v"原字典就有的k则更新v,没有的就添加一个。update内用的是 k = "v",k不需要引号。
2)删除
dict1.pop("k1" , "k2")删除对应的k所在的键值对。pop里只写k,要加引号。
dict1.popitem():删除该字典中最后一个键值对,popitem本身有值,为被删掉的键值对转为元组形式,即("k" , "v")。在 3.7 之前的版本中,popitem() 方法删除一个随机项。
dict1.clear()清空字典。
字典的其他常用操作
1)为字典设置默认值
setdefault为字典设置默认值,如果某个key存在则忽略,如果不存在则设置。dict.setdefault('key','默认值')如:emp.setdefault('grade','c')
2)字典的视图
随着原始数据的变动而变动。ks = emp.keys() 提取键 vs = emp.values() 提取值 its = emp.items() 提取键对值
3)字典的格式化输出
老版本字典格式化字符串变量 = “%(键)s”%字典名str="姓名:%(name)s,评级:%(grade)s,入职时间:%(hiredate)s" %emp
新版本字典格式化字符串变量 = “{键}”.format_map(字典名)emp_str = "姓名{name},评级:{grade},入职时间:{hiredae}".format_map(emp)
|