当前位置:首页>python>Python 核心数据结构

Python 核心数据结构

  • 2026-08-27 09:47:23
Python 核心数据结构

一、List(列表)

1.1、基础信息

  • 列表写在方括号之间,元素用逗号隔开。
  • 列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
  • 和字符串一样,列表同样可以被索引和截取。
  • 从左往右,下标从0开始;从右往左,下标从-1开始。

  • 与Python字符串不一样的是,列表中的元素是可以改变的。a[0] = 9可以修改列表a下标0的值为9。
  • 列表可以使用+操作符进行拼接。

1.2、方法

list = ['a', 'b', 'c']

方法名

用法

结果

说明

append()

list.append('d')

list=['a', 'b', 'c','d']

在列表末尾添加新的对象

del 语句

del list[2]

list=['a', 'b', 'd']

删除列表中的元素

remove()

list.remove('a')

list=['b', 'd']

移除列表中某个值的第一个匹配项

count()

list.count('b')

1

统计某个元素在列表中出现的次数

extend()

seq = ('a', 'b', 'c')

list = list(seq)

list2 = ['d','e','a']

list.extend(list2)

list3 = list

print (list3)

['a', 'b', 'c', 'd', 'e','a']

踩坑点:直接使用

list3 = list.extend(list2)

输出list3会显示None

因为extend()是原地修改方法,没有返回值,所以会None

在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

index()

list3.index('a')

0

从列表中找出某个值第一个匹配项的索引位置

insert()

list3.insert(0,'f')

['f', 'a', 'b', 'c', 'd', 'e', 'a']

将对象插入列表

pop()

list3.pop()

list3.pop(1)

['f', 'a', 'b', 'c', 'd', 'e'']

['f', 'b', 'c', 'd', 'e', 'a']

移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

reverse()

list3.reverse()

['e', 'd', 'c', 'b', 'a', 'f']

踩坑点:print(list3.reverse())返回None

执行list3.reverse()再输出

print (list3)就正常

反向列表中元素

sort()

list3.sort()

['a', 'b', 'c', 'd', 'e', 'f']

对原列表进行排序

copy()

list6 = list3.copy()

['a', 'b', 'c', 'd', 'e', 'f']

复制列表

clear()

list6.clear()

[]

清空列表

1.3、函数

list = ['a', 'b', 'c']

方法名

用法

结果

说明

len()

len(list)

3

计算长度

max()

max(list)

c

返回列表元素最大值

min()

min(list)

a

返回列表元素最小值

list()

seq = ('a', 'b', 'c')

list(seq)

['a', 'b', 'c']

将元组转换为列表

1.4、操作运算

squares = [1, 4, 9, 16, 25]

运算符

用法

结果

说明

+=

squares += [36, 49, 64, 81, 100]

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

拼接操作

嵌套列表

a = ['a', 'b', 'c']

n = [1, 2, 3]

x = [a, n]

x=[['a', 'b', 'c'], [1, 2, 3]]

x[0]=['a', 'b', 'c']

x[0][1]='b'

在列表里创建其它列表

列表比较

(需要引入 operator 模块的 eq 方法)

import operator

a = [1, 2]b = [2, 3]c = [2, 3]print("operator.eq(a,b): ", operator.eq(a,b))print("operator.eq(c,b): ", operator.eq(c,b))

operator.eq(a,b):  False 

operator.eq(c,b):  True

比较两个列表的值

二、Tuple(元组)

  • 元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号()里,元素之间用逗号隔开。
  • 创建元组不需要括号也可以。tup1 = 'a','b'      print (type(tup1))
  • 元组中的元素类型也可以不相同。
  • 元组也可以使用+操作符进行拼接。
  • 元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取(看上面,这里不再赘述)。
  • tup[0] = 11   修改元组元素的操作是非法的

    创建空元组:tup1 = ()

  • 元组中只包含一个元素时,需要在元素后面添加逗号,,否则括号会被当作运算符使用
  • 元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组:del tup1
  • 元组内置函数也包括:max()、min()、len()。tuple(iterable):将可迭代系列转换为元组。
  • 查看内存地址:id(tup1)

三、Set(集合)

  • Python 中的集合(Set)是一种无序、可变的数据类型,用于存储唯一的元素。
  • 集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。
  • 在 Python 中,集合使用大括号{}表示,元素之间用逗号,分隔。
  • 也可以使用set()函数创建集合,注意set()函数仅支持传入 1 个可迭代对象参数。
  • 添加元素:

    • sites1.add('a'),如果元素已存在,则不进行任何操作。

    • sites1.update(x),参数可以是列表,元组,字典等.

    • sites1.update({1,3})     输出:sites1={1,3,'a','b'}

  • 移除元素:
    • sites1.remove(x):将元素 x 从集合 sites1 中移除,如果元素不存在,则会发生错误。

    • sites1.discard(x):如果元素不存在,不会发生错误。

    • x = thisset.pop():随机删除集合中的一个元素。x为删除的元素。多次执行测试结果都不一样。

    • set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。

  • 计算元素个数:len(sites1)
  • 清空集合:sites1.clear()     输出set()
  • 注意:创建一个空集合必须用set()而不是{ },因为{ }是用来创建一个空字典。
  • 踩坑指南:
    • 设置值的时候,要加引号,刚开始直接sites1 = {a,b}会报错,判断逻辑处同理
    • Java->else if;python->elif
    • 刚开始习惯使用加号+来连接:print ("差集:" + (sites1 - sites2)),直接报错,String类型和Set类型不能使用+连接,用逗号就正常了。

四、Dictionary(字典)

  • 列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
  • 字典是一种映射类型,字典用{ }标识,它是一个无序的键(key) : 值(value)的集合。

  • 字典里键值对的值是可变的。
  • 键(key)必须使用不可变类型。

  • 在同一个字典中,键(key)必须是唯一、不可变的,如字符串,数字。

  • 字典的每个键值key=>value对用冒号:分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中 。
  • 创建空字典使用{ }。

内置函数&方法

  • 使用内建函数dict()创建字典
踩坑点:使用dict()创建字典时,用等号“=”标识键值对;使用{}创建字典时,用冒号“:”标识键值对。否则会报错。
知识点:AI 接口返回数据几乎都是字典格式,与 Java 的 JSON 对象解析逻辑一致。

最新文章

随机文章