小言_互联网的博客

Python常用的内置数据结构

423人阅读  评论(0)

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],组合多个列表
[123] * 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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场