Python常用的内置数据结构主要有列表(list)、元组(tuple)、字典(dictionary)、集合(set)。其中列表是有序的可变对象集合,元组是有序的不可变对象集合,字典是无序的键值对集合,集合是无序的唯一对象集合。
列表(list)
列表是最常用的Python数据类型,列表中的每个元素都有一个索引(从0开始),其数据项不需要具有相同的类型,列表是可变序列,可以直接对其进行修改。
创建列表
使用方括号将以逗号分隔的不同数据项括起来。
list1 = ['physics', 1997, "a", (1,2,3), [4,5,6]]
访问列表元素
可通过索引或切片的形式访问列表中的元素。
list1[0] #输出 'physics'
list1[-2] #输出 (1,2,3)
list1[3][0] #输出 1
list1[0][5] #输出 'c'
list1[2:4] #输出 ['a', (1, 2, 3)] (左闭右开)
list1[:3] #输出 ['physics', 1997, 'a'] (不包括索引为3的元素)
list1[2:] #输出['a', (1, 2, 3), [4, 5, 6]]
更新列表
常用的更新列表的操作有添加元素、删除元素、修改元素。
- 添加元素
可调用append、extend、insert方法添加元素,其中append和extend方法均将元素添加到列表的末尾,append方法每次只能添加一个元素,而extend方法可通过元素列表的形式一次添加多个元素。insert方法可指定插入元素的位置。
# list1 = ['physics', 1997, "a", (1,2,3), [4,5,6]]
list1.append(5) #list1变为['physics', 1997, 'a', (1,2,3), [4,5,6], 5]
list1.append([5,6]) #list1变为['physics', 1997, 'a', (1,2,3), [4,5,6], [5, 6]]
list1.extend([5,6]) #list1变为['physics', 1997, 'a', (1,2,3), [4,5,6], 5, 6]
list1.extend([5,[6,7]]) #list1变为['physics', 1997, 'a', (1,2,3), [4,5,6], 5, [6, 7]]
list1.insert(2,"b") #list1变为['physics', 1997, 'b', 'a', (1,2,3), [4,5,6]]
- 删除元素
删除元素的方法有del(指定索引或切片)、remove(指定元素)、pop(指定索引,并返回索引处的值)、clear(清空列表元素)
# list1 = ['physics', 1997, "a", (1,2,3), [4,5,6]]
del list1[2] # list1 = ['physics', 1997, (1,2,3), [4,5,6]]
del list1[2:4] # list1 = ['physics', 1997, [4,5,6]]
list1.remove(1997) # list1 = ['physics', 'a', (1,2,3), [4,5,6]]
# 使用remove时,若列表中存在多个相同指定元素,则删除列表中第一次出现的指定元素
# 如 list1 = [1, 2, 3, 2]
list1.remove(2) # list1 = [1, 3, 2]
list1.pop() # 不指定索引,默认弹出最后一个元素,返回[4, 5, 6],list1 = ['physics', 1997, 'a', (1,2,3)]
list1.pop(2) # 返回'a',list1 = ['physics', 1997, (1,2,3), [4,5,6]]
list1.clear() # list1 = []
- 修改元素
# list1 = ['physics', 1997, "a", (1,2,3), [4,5,6]]
list1[2] = 'ab' # list1 = ['physics', 1997, 'ab', (1,2,3), [4,5,6]]
list1.reverse() # 反转,list1 = [[4,5,6], (1,2,3), 'a', 1997, 'physics']
列表脚本操作符
len([1,2,3]) #返回3,求列表元素个数
[1, 2, 3] + [4, 5, 6] #返回[1, 2, 3, 4, 5, 6],组合多个列表
[1,2,3] * 2 #返回[1, 2, 3, 1, 2, 3],重复
2 in [1, 2, 3] #返回True,判断元素是否存在于列表中
for x in [1, 2, 3]:
print(x) #返回1 2 3,迭代
列表函数和方法
#函数
max([1,2,3]) #返回3,返回列表元素最大值
min([1,2,3]) #返回1,返回列表元素最小值
sorted([4,2,6,3]) #返回[2, 3, 4, 6],排序
#方法
list1 = [1, 2, 3, 4, 3, 5]
list1.count(3) #返回2,统计指定元素在列表中出现的次数
list1.index(3) #返回2,从列表中找出指定值第一个匹配项的索引位置
list1.sort(list1) #返回[1, 2, 3, 3, 4, 5],排序
列表推导式
[x for x in range(0, 10) if x % 2 == 0] #返回[0, 2, 4, 6, 8]
元组(tuple)
Python的元组与列表类似,不同之处在于元组是不可变序列,元组的元素不能直接修改(可通过某些方式进行连接删除)。元组使用小括号,列表使用方括号。元组在输出时总是有括号的,输入时有无括号均可。
创建元组
使用小括号将以逗号分隔的不同数据项括起来或不使用小括号,直接将多个数据项用逗号隔开。需要注意的是,当元组中只包含一个元素时,需要在元素后面添加逗号。
tup1 = ('physics', 1997, "a", (1,2,3), [4,5,6])
tup2 = 'physics', 1997, "a", (1,2,3), [4,5,6]
tup3 = (50,)
tup4 = 50,
访问元组元素
与列表相同,可通过索引或切片的形式访问元组中的元素。
更新元组
元组是不可变序列,因此没有append、insert、remove等方法,但可通过‘+’、‘*’对元组进行连接和复制,也可使用del语句删除整个元组。
(1, 2, 3) + (4, 5, 6) #输出(1, 2, 3, 4, 5, 6)
(1, 2, 3) * 2 #输出(1, 2, 3, 1, 2, 3)
tup1 = 1, 2, 3
del tup1
元组脚本操作符
与列表相同
元组函数和方法
元组同样具有len、max、min函数和count、index方法
字典(dictionary)
字典是Python中的哈希表,是可变容器模型,且可存储任意类型对象。字典是无序的,包括多个键值对,要求键是唯一且不可变的(字符串、数字、元组),若出现重复则替换掉前面的键值对,值不需要唯一且可取任意数据类型。
创建字典
字典的每个键值对用冒号分割,键值对之间用逗号分割,且整个字典包括在花括号中。
dict1 = {'a': 1, 'b': 2, 'c':3}
dict2 = {'a': 1, 'b': 2, 'a':3} #键必须是唯一的,此时dict2为{'a': 3, 'b': 2}
dict3 = {'a': 1, 'b': 2, 'c':2} #值不需要唯一
dict4 = {'a': [1, 2, 3], 99: 'a', (7, 9, 8): 88}
访问字典元素
通过键访问字典元素,若键不存在则报错。
dict4 = {'a': [1, 2, 3], 99: 'a', (7, 9, 8): 88}
dict4['a'] #输出[1, 2, 3]
更新字典
- 添加新的键值对
dict1 = {'Name': 'Are', 'Age': 7, 'Class': 'A'}
dict1['School'] = 'chaoyang' # dict1 = {'Age': 7, 'Class': 'A', 'Name': 'Are', 'School': 'chaoyang'}
- 删除键值对
del dict1['Name'] #删除键是'Name'的条目
del dict1 #删除整个字典
dict1.clear() #清空字典中所有条目
- 修改键的值
dict1 = {'Name': 'Are', 'Age': 7, 'Class': 'A'}
dict1['Age'] = 8 # dict1 = {'Age': 8, 'Class': 'A', 'Name': 'Are'}
字典函数和方法
#函数
dict1 = {'Name': 'Are', 'Age': 7, 'Class': 'A'}
len(dict1) #输出3,计算键的总数
#方法
dict1.copy() #复制
dict2.fromkeys([1,2,3], 5) #返回{1:5,2:5,3:5}
dict1.get('Age') #输出7,返回指定键的值
dict1.setdefault('School', 'chaoyang') #与get类似,返回指定键的值,若指定键不存在则添加并返回。
dict1.has_key('Name') #输出True,判断指定键是否在字典中
dict1.items() #输出[('Name', 'Are'), ('Age', 7), ('Class', 'A')],以列表形式返回可遍历的(键,值)元组数组
dict1.keys() #输出['Name', 'Age', 'Class'],以列表形式返回字典中的所有键
dict1.values() #输出['Are', 7, 'A'],以列表形式返回字典中的所有值
dict1.update(dict2) #将dict2中的键值对更新到dict1里,若键已存在则更新值,不存在则添加
dict1.popitem() #返回并删除字典中的最后一对键值
dict1.pop('Name') #返回字典中键为'Name'的值并删除该键值对
集合(set)
由一系列无序且互异的元素组成。集合不支持索引,常见的操作有差、并、交、异或。
创建集合
set1 = {1, 2, 3}
set2 = set() #创建空集合时不能用set2 = {}
set3 = set([1,2,3,4,5,1]) #将list转换成set,set3 = {1, 2, 3, 4, 5}
更新集合
更新集合的方法有add(增加单个元素)、update(增加一组元素)、remove、discard(删除指定元素)、clear(集合清空)、del(删除集合)、pop(弹出一个元素并删除)。
set1 = {1, 2, 3, 4, 5}
set1.add(6) #set1 = {1, 2, 3, 4, 5, 6}
set1.update({4, 5, 6, 7}) #set1 = {1, 2, 3, 4, 5, 6, 7}
set1.remove(5) #set1 = {1, 2, 3, 4},若指定元素不存在则报错
set1.discard(6) #set1 = {1, 2, 3, 4, 5},若指定元素存在则删除,不存在不报错,集合不变
set1.clear() #清空集合
set1.pop() #输出1,set1 = {2, 3, 4, 5}
del set1 #删除集合
集合的操作
set1 = {1, 2, 2, 2, 5, 4, 5}
set2 = {4, 5, 6, 7}
set1 & set2 #输出{4,5},求两个集合的交集
set1 | set2 #输出{1,2,4,5,6,7},求两个集合的并集
set1 - set2 #输出{1,2},求两个集合的差集
set2 - set1 #输出{6,7},求两个集合的差集
set1 ^ set2 #输出{1,2,6,7},求两个集合的异或
转载:https://blog.csdn.net/weixin_42700144/article/details/102475108