当前位置: 首页 > news >正文

python里的数据结构

  1. 列表(List)
    • 定义和特点
      • 列表是一种有序的可变序列,可包含不同类型的元素,如整数、字符串、列表等。可以通过索引访问和修改元素,索引从 0 开始。
    • 代码示例
my_list = [1, 2, 'apple', [4, 5]]
print(my_list[0])  # 输出列表中的第一个元素,即1
my_list[2] = 'banana'  # 修改列表中的第三个元素
print(my_list)
  1. 创建列表
    • 直接创建:使用方括号[]将元素括起来,元素之间用逗号分隔。例如:my_list = [1, 2, 3],可以包含不同类型的元素,如my_list_with_different_types = [1, "apple", True]
    • 使用list()函数创建:可以将其他可迭代对象(如元组、集合、字符串)转换为列表。例如,将元组转换为列表:my_tuple = (1, 2, 3)my_list_from_tuple = list(my_tuple),此时my_list_from_tuple的值为[1, 2, 3];将字符串转换为列表:my_string = "abc"my_list_from_string = list(my_string),得到['a', 'b', 'c']
  2. 访问元素
    • 通过索引访问:列表中的元素索引从 0 开始,使用方括号[]加上索引值来访问元素。例如:my_list = [1, 2, 3]print(my_list[0])会输出1print(my_list[2])会输出3。可以使用负数索引从列表末尾开始访问,如my_list[-1]表示最后一个元素,my_list[-2]表示倒数第二个元素。
  3. 修改元素
    • 通过索引修改:使用方括号[]和索引来修改指定位置的元素。例如:my_list = [1, 2, 3]my_list[1] = 4,此时my_list变为[1, 4, 3]
  4. 添加元素
    • append方法:用于在列表末尾添加一个元素。例如:my_list = [1, 2, 3]my_list.append(4),则my_list变为[1, 2, 3, 4]
    • insert方法:用于在指定位置插入一个元素。它接受两个参数,第一个参数是插入位置的索引,第二个参数是要插入的元素。例如:my_list = [1, 2, 3]my_list.insert(1, "apple"),此时my_list变为[1, "apple", 2, 3]
  5. 删除元素
    • remove方法:用于删除列表中指定的元素。如果元素不存在,会抛出ValueError异常。例如:my_list = [1, 2, 3]my_list.remove(2),此时my_list变为[1, 3]
    • pop方法:用于删除并返回指定索引位置的元素。如果不指定索引,默认删除并返回最后一个元素。例如:my_list = [1, 2, 3]popped_element = my_list.pop(1),此时my_list变为[1, 3]popped_element的值为2
    • del关键字:可以用于删除列表中的元素或整个列表。例如:my_list = [1, 2, 3]del my_list[0],此时my_list变为[2, 3];如果使用del my_list,则会删除整个列表。
  6. 列表切片
    • 基本语法:使用[start:stop:step]的形式来获取列表的一个子序列。start表示起始索引(包含),stop表示结束索引(不包含),step表示步长。例如:my_list = [1, 2, 3, 4, 5]print(my_list[1:4])会输出[2, 3, 4]print(my_list[::2])会输出[1, 3, 5]
  7. 列表排序
    • sort方法:用于对列表中的元素进行排序。默认是升序排序,可以通过sort(reverse = True)进行降序排序。例如:my_list = [3, 1, 2]my_list.sort(),此时my_list变为[1, 2, 3];如果使用my_list.sort(reverse = True),则my_list变为[3, 2, 1]
    • sorted函数:与sort方法类似,但sorted函数会返回一个新的已排序的列表,而原列表不变。例如:my_list = [3, 1, 2]new_sorted_list = sorted(my_list),此时my_list仍为[3, 1, 2],而new_sorted_list[1, 2, 3]
  8. 列表的拼接和重复
    • 拼接:可以使用+运算符将两个列表拼接在一起。例如:list1 = [1, 2]list2 = [3, 4]combined_list = list1 + list2,此时combined_list的值为[1, 2, 3, 4]
    • 重复:可以使用*运算符将列表重复指定的次数。例如:my_list = [1, 2]repeated_list = my_list * 3,此时repeated_list的值为[1, 2, 1, 2, 1, 2]
  9. 查找元素位置
    • index方法:用于查找元素在列表中的第一个位置索引。如果元素不存在,会抛出ValueError异常。例如:my_list = [1, 2, 3, 2]print(my_list.index(2))会输出1
  10. 统计元素个数
  • count方法:用于统计元素在列表中出现的次数。例如:my_list = [1, 2, 3, 2]print(my_list.count(2))会输出2
  1. 元组(Tuple)
    • 定义和特点
      • 元组是有序的不可变序列,一旦创建,元素不能修改。它也可以包含多种类型的元素,常用于存储相关联的数据。
    • 代码示例
my_tuple = (1, 2, 'apple')
print(my_tuple[1])  # 输出元组中的第二个元素,即2
# 以下代码会出错,因为元组是不可变的
# my_tuple[2] = 'banana'

  1. 集合(Set)
    • 定义和特点
      • 集合是无序的可变数据结构,元素具有唯一性,即不会包含重复的元素。主要用于去重、数学集合运算(如交集、并集、差集)等。
    • 代码示例
my_set = {1, 2, 3, 3}  # 自动去除重复元素,实际为{1, 2, 3}
my_set.add(4)  # 添加元素4
print(my_set)
another_set = {3, 4, 5}
intersection_set = my_set & another_set  # 求交集
print(intersection_set)
  1. 创建集合
    • 直接创建:使用花括号{}将元素括起来,元素之间用逗号分隔。例如:my_set = {1, 2, 3}。需要注意的是,如果要创建一个空集合,不能使用{},因为{}在 Python 中默认用于创建字典,空集合应该使用set()函数来创建,如empty_set = set()
    • 从可迭代对象创建:可以使用set()函数将其他可迭代对象(如列表、元组)转换为集合,从而去除重复元素。例如:my_list = [1, 2, 2, 3]my_set_from_list = set(my_list),此时my_set_from_list的值为{1, 2, 3}
  2. 添加元素
    • add方法:用于向集合中添加一个元素。如果添加的元素已经存在于集合中,集合不会发生变化。例如:my_set = {1, 2, 3}my_set.add(4),此时my_set变为{1, 2, 3, 4}
  3. 删除元素
    • remove方法:用于删除集合中指定的元素。如果元素不存在,会抛出KeyError异常。例如:my_set = {1, 2, 3}my_set.remove(2),此时my_set变为{1, 3}
    • discard方法:与remove类似,用于删除集合中的元素,但如果元素不存在,不会抛出异常。例如:my_set = {1, 2, 3}my_set.discard(4)my_set的值不变,仍为{1, 2, 3}
    • pop方法:随机删除并返回集合中的一个元素。由于集合是无序的,所以无法确定删除的是哪个元素。例如:my_set = {1, 2, 3}popped_element = my_set.pop()popped_element的值是集合中的一个元素(可能是123),同时my_set会少一个元素。
  4. 集合运算
    • 交集(&intersection方法):返回两个集合中共同的元素。例如:set1 = {1, 2, 3}set2 = {2, 3, 4}intersection_set = set1 & set2(或intersection_set = set1.intersection(set2)),intersection_set的值为{2, 3}
    • 并集(|union方法):返回包含两个集合中所有元素的集合。例如:set1 = {1, 2, 3}set2 = {2, 3, 4}union_set = set1 | set2(或union_set = set1.union(set2)),union_set的值为{1, 2, 3, 4}
    • 差集(-difference方法):返回一个集合中存在而另一个集合中不存在的元素。例如:set1 = {1, 2, 3}set2 = {2, 3, 4}difference_set = set1 - set2(或difference_set = set1.difference(set2)),difference_set的值为{1}
    • 对称差集(^symmetric_difference方法):返回两个集合中不重复的所有元素,即只存在于一个集合中的元素。例如:set1 = {1, 2, 3}set2 = {2, 3, 4}symmetric_difference_set = set1 ^ set2(或symmetric_difference_set = set1.symmetric_difference(set2)),symmetric_difference_set的值为{1, 4}
  5. 判断元素是否在集合中
    • 使用in关键字。例如:my_set = {1, 2, 3}print(1 in my_set)会输出Trueprint(4 in my_set)会输出False
  6. 集合的比较
    • issubset方法(<=:用于判断一个集合是否是另一个集合的子集。例如:set1 = {1, 2}set2 = {1, 2, 3}print(set1.issubset(set2))(或print(set1 <= set2))会输出True
    • issuperset方法(>=:用于判断一个集合是否是另一个集合的超集。例如:set1 = {1, 2, 3}set2 = {1, 2}print(set1.issuperset(set2))(或print(set1 >= set2))会输出True
    • isdisjoint方法:用于判断两个集合是否没有共同元素。例如:set1 = {1, 2}set2 = {3, 4}print(set1.isdisjoint(set2))会输出True
  1. 字典(Dictionary)
    • 定义和特点
      • 字典是无序的可变数据结构,由键 - 值(key - value)对组成。键必须是唯一的,值可以是任何类型。通过键来访问和修改值。
    • 代码示例
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
print(my_dict['name'])  # 输出键为'name'的值,即'John'
my_dict['age'] = 31  # 修改键'age'的值
print(my_dict)

  1. 字符串(String)
    • 定义和特点
      • 字符串是有序的不可变序列,用于表示文本。可以通过索引访问字符,也可以进行切片操作。
    • 代码示例
my_string = "Hello, World!"
print(my_string[0])  # 输出字符串中的第一个字符,即'H'
print(my_string[7:])  # 切片操作,输出从索引7开始的字符,即'World!'
# 以下代码会出错,因为字符串是不可变的
# my_string[5] = '.'
http://www.lryc.cn/news/489435.html

相关文章:

  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第二十一集:制作游戏的金钱系统吉欧Geo和初步制作HUD Canvas的额外内容
  • 底层逻辑之:极大似然方法(Maximum Likelihood Estimation, MLE)
  • 笔记:Centos Nginx Jdk Mysql OpenOffce KkFile Minio安装部署
  • 【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
  • 深入探索Go语言中的sync.Mutex与sync.RWMutex:原理、应用与实践
  • 15.postgresql--jsonb 数组进行打平,过滤
  • linux下i2c开发与框架源码分析
  • [ruby on rails] 安装docker
  • I2C学习
  • VUE:基于MVVN的前端js框架
  • 06、Spring AOP
  • c语言学习26字符串的应用
  • 法语旅游常用口语-柯桥学外语到蓝天广场泓畅学校
  • Kafka 生产者优化与数据处理经验
  • MySQL 主从复制之多线程复制
  • Linux2.6内核进程调度队列
  • Infineon(英飞凌) TLE985xQX 芯片电机工作电流、电压AD采样
  • Sparrow系列拓展篇:对信号量应用问题的深入讨论
  • 图文详解Docker下配置、测试Redis
  • Python编程艺术:优雅与实用的完美平衡(推导式)
  • Spring Boot框架Starter组件整理
  • C/C++基础知识复习(27)
  • IEC61850实现方案和测试-2
  • flume-将日志采集到hdfs
  • 一文学习开源框架LeakCanary
  • jetson orin系列开发版安装cuda的gpu版本的opencv
  • 数据结构-8.Java. 七大排序算法(中篇)
  • 数据结构C语言描述4(图文结合)--栈的实现,中序转后序表达式的实现
  • python基本数据类型 -- 元组tuple
  • tcpdump交叉编译