【Python pro】组合数据类型

1、列表

1.1 列表的表达

  1. 序列类型:内部元素有位置关系,能通过位置序号访问其中元素
  2. 序列特点:可使用多种类型元素,支持元素的增删查改
lst = ["python", 2025, True, {"age": 20}]
print(lst)
# 输出:['python', 2025, True, {'age': 20}]
  • list(可迭代类型)

1.1.1 字符串转列表

lst1 = list("人工智能")
print(lst1)
# 输出:['人', '工', '智', '能']

1.1.2 元组转列表

lst2 = list(("我", "们", "爱", "中", "国"))
print(lst2)
# 输出:['我', '们', '爱', '中', '国']

1.1.3 集合转列表

lst3 = list({"Mike", "Jim", "Tim", "Jerry", "Tom"})
print(lst3)
# 输出:['Tom', 'Tim', 'Jerry', 'Jim', 'Mike']

1.1.4 特殊的range(开始数据, 结束数据, 数字间隔)

for i in [1,2,3]:print(i)
# 输出:1
#      2
#      3for i in range(3):print(i)
# 输出:0
#      1
#      2

注意:
  1. 开始数据若为0,则可以省略
  2. 结束数据不可以省略
  3. 数字间隔默认为1

for i in range(1, 11, 2):print(i)
# 输出:1
#      3
#      5
#      7
#      9print(list(range(1, 11, 2)))
# 输出:[1, 3, 5, 7, 9]

1.2 列表的性质

1.2.1 列表的长度——len(列表)

lst = [1,2,3,4,5,6,7,8,9]
print(len(lst))
# 输出:9

1.2.2 列表的索引——变量名[位置编号]

cars = ["BYD", "BMW", "HRV"]
print(cars[0])
# 输出:BYD
print(cars[-1])
# 输出:HRV

用法与字符串完全相同

1.2.3 列表的切片——变量名[开始位置:结束位置:切片间隔]

cars = ["BYD", "BMW", "HRV", "AUDI"]
print(cars[1:4:2])  # 正向切片
# 输出:['BMW', 'AUDI']
print(cars[:-4:-1])  # 反向切片
# 输出:['AUDI', 'HRV', 'BMW']
print(cars[:])  # 遍历
# 输出:['BYD', 'BMW', 'HRV', 'AUDI']

1.3 列表的操作符

1.3.1 列表的拼接——lst1 + lst2

lst1 = [1, 2]
lst2 = [3, 4, 5]
c = lst1 + lst2
print(c)
# 输出:[1, 2, 3, 4, 5]

1.3.2 列表的成倍复制——lst*n

lst3 = [0]*10
print(lst3)
# 输出:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

初始化列表的一种方式

1.4 列表的操作方法

1.4.1 增加元素

(1)在末尾增加——lst.append(待增元素)
language = ["Python", "Java", "C++", "JavaScript", "PHP", "C#"]
language.append("R")
print(language)
# 输出:['Python', 'Java', 'C++', 'JavaScript', 'PHP', 'C#', 'R']
(2)在任意位置增加——lst.insert(位置编号, 待增元素)
language.insert(1, "C")
print(language)
# 输出:['Python', 'C', 'Java', 'C++', 'JavaScript', 'PHP', 'C#', 'R']
(3)在末尾整体并入另一列表
language.append(["MySQL", "CSS"])  # 整体添加
print(language)
# 输出:['Python', 'C', 'Java', 'C++', 'JavaScript', 'PHP', 'C#', 'R', ['MySQL', 'CSS']]language.extend(["SQL", "go"])  # 逐个添加
print(language)
# 输出:['Python', 'C', 'Java', 'C++', 'JavaScript', 'PHP', 'C#', 'R', ['MySQL', 'CSS'], 'SQL', 'go']

1.4.2 删除元素

(1)删除位置i处的元素——lst.pop(位置编号)
language.pop(0)
print(language)
# 输出:['C', 'Java', 'C++', 'JavaScript', 'PHP', 'C#', 'R', ['MySQL', 'CSS'], 'SQL', 'go']
language.pop()  # 若空白,则默认删除最后一个
print(language)
# 输出:['C', 'Java', 'C++', 'JavaScript', 'PHP', 'C#', 'R', ['MySQL', 'CSS'], 'SQL']
(2)删除列表第一次出现的待删元素——lst.remove(待删元素)
language.remove("Java")
print(language)
# 输出:['C', 'C++', 'JavaScript', 'PHP', 'C#', 'R', ['MySQL', 'CSS'], 'SQL']while "R" in language:language.remove("R")
print(language)
# 输出:['C', 'C++', 'JavaScript', 'PHP', 'C#', ['MySQL', 'CSS'], 'SQL']

1.4.3 查找元素

lst.index(待查元素):查找列表中第一次出现待查元素的位置

idx = language.index("C++")
print(idx)
# 输出:1

1.4.4 修改元素

lst[位置]=新值:先索引,后赋值

language[1] = "R"
print(language)
# 输出:['C', 'R', 'JavaScript', 'PHP', 'C#', ['MySQL', 'CSS'], 'SQL']

1.4.5 列表的复制

(1)错误的方式
codes = ["python", "java", "C"]
codes1 = codes
print(codes1)
# 输出:['python', 'java', 'C']codes.pop()
print(codes)
# 输出:['python', 'java']
print(codes1)
# 输出:['python', 'java']
(2)浅拷贝
# lst.copy()
codes2 = codes.copy()
codes.pop()
print(codes)
# 输出:['python']
print(codes2)
# 输出:['python', 'java']# --------------------------------------------------# lst[:]
codes3 = codes2[:]
codes2.pop()
print(codes2)
# 输出:['python']
print(codes3)
# 输出:['python', 'java']

1.4.6 列表的排序

(1)lst.sort()——永久排序,原列表改变,无返回值
lst = [1, 3, 5, 11, 2, 9]
lst.sort()
print(lst)
# 输出:[1, 2, 3, 5, 9, 11]
lst.sort(reverse=True)  # 递减排序
print(lst)
# 输出:[11, 9, 5, 3, 2, 1]
(2)sorted(列表名)——临时排序,原列表不变,返回值是排序后的类别
lst = [2, 5, 1, 20, 7]
lst1 = sorted(lst)
lst2 = sorted(lst1, reverse=True)
print(lst)
# 输出:[2, 5, 1, 20, 7]
print(lst1)
# 输出:[1, 2, 5, 7, 20]
print(lst2)
# 输出:[20, 7, 5, 2, 1]

1.4.7 列表的翻转

lst.reverse():永久翻转,原列表改变,无返回值

lst = [1, 2, 3, 4, 5, 6]
print(lst[::-1])
# 输出:[6, 5, 4, 3, 2, 1]
print(lst)
# 输出:[1, 2, 3, 4, 5, 6]
lst.reverse()
print(lst)
# 输出:[6, 5, 4, 3, 2, 1]

1.4.8 for循环遍历

lst = [1, 2, 3, 4, 5, 6]
for i in lst:print(i)
# 输出:1
#      2
#      3
#      4
#      5
#      6

2、元组

2.1 元组的表达

特点:
  1. 支持多种类型的元素
  2. 内部元素不支持增删改的序列操作

names = ["Mike", "Jim", "Tim", "Jerry", "Tom"]

2.2 元组的操作

  1. 不支持元素增加、元素删除、元素修改
  2. 其他操作与列表一致

2.3 元组的常见用处——打包与解包

  • 例1
def f1(x):  # 返回x的平方和立方return x**2, x**3  # 实现打包返回print(f1(3))
# 输出:(9, 27)
print(type(f1(3)))
# 输出:<class 'tuple'>
  • 例2
numbers = [202501, 202502, 202503]
names = ["小红", "小蓝", "小绿"]
list(zip(numbers, names))  # 实现打包返回for number, name in zip(numbers, names):print(number, name)
# 输出:202501 小红
#      202502 小蓝
#      202503 小绿

3、字典

3.1 字典的表达

  1. 映射类型:通过“键”-“值”的映射实现数据存储和查找
  2. 常规的字典是无序
students = {202501: "小红", 202502: "小蓝", 202503: "小绿"}
print(students)
# 输出:{202501: '小红', 202502: '小蓝', 202503: '小绿'}

字典键的要求:

  • 字典键不能重复
students = {202501: "小红", 202502: "小蓝", 202501: "小红"}
print(students)
# 输出:{202501: '小红', 202502: '小蓝'}
  • 字典键是不可变类型
  1. 不可变类型:数字、字符串、元组
  2. 可变类型:列表、字典、集合
d1 = {1: 3}
d2 = {"a": 1}
d3 = {(1, 2): 3}# --------------------------------------------------d = {[1, 2]: 3}
# 输出:TypeError: unhashable type: 'list'
d = {{1: 2}: 3}
# 输出:TypeError: unhashable type: 'dict'
d = {{1, 2}: 3}
# 输出:TypeError: unhashable type: 'set'

3.2 字典的性质

3.2.1 字典的长度——键值对的个数

children = {2025: "小明", 2024: "李华", 2023: "张三"}
print(len(children))
# 输出:3

3.2.2 字典的索引——d[键]

print(children[2024])
# 输出:李华

3.3 字典的操作方法

3.3.1 增加键值对——变量名[新键]=新值

students = {2025: "张三", 2024: "李四", 2023: "赵五"}
students[2023] = "小雪"
print(students)
# 输出:{2025: '张三', 2024: '李四', 2023: '小雪'}

3.3.2 删除键值对

(1)del 变量名[待删除键]
del students[2025]  # del 变量名[待删除键]
print(students)
# 输出:{2024: '李四', 2023: '小雪'}
(2)变量名.pop(待删除键)
value = students.pop(2024)  # 变量名.pop(待删除键)
print(value)
# 输出:李四
print(students)
# 输出:{2023: '小雪'}
(3)变量名.popitem()

随机删除一个键值对,并以元组返回待删除的键值对

key, value = students.popitem()  # 变量名.popitem()--随机删除一个键值对,并以元组返回待删除的键值对
print(key, value)
# 输出:2023 小雪
print(students)
# 输出:{}

3.3.3 修改值

students = {2025: "小明", 2024: "小强"}
students[2025] = "小雪"
print(students)
# 输出:{2025: '小雪', 2024: '小强'}

3.3.4  d.get(key, default())

从字典中获取key对应的value,若没有这个键,则返回default

s = "牛奶奶找刘奶奶买牛奶"
d = {}
print(d)
for i in s:d[i] = d.get(i, 0) + 1print(d)
# 输出:{}
#      {'牛': 1}
#      {'牛': 1, '奶': 1}
#      {'牛': 1, '奶': 2}
#      {'牛': 1, '奶': 2, '找': 1}
#      {'牛': 1, '奶': 2, '找': 1, '刘': 1}
#      {'牛': 1, '奶': 3, '找': 1, '刘': 1}
#      {'牛': 1, '奶': 4, '找': 1, '刘': 1}
#      {'牛': 1, '奶': 4, '找': 1, '刘': 1, '买': 1}
#      {'牛': 2, '奶': 4, '找': 1, '刘': 1, '买': 1}
#      {'牛': 2, '奶': 5, '找': 1, '刘': 1, '买': 1}

3.3.5  d.keys()   d.values()

students = {2025: "小明", 2024: "小强", 2023: "小雪"}
print(list(students.values()))
# 输出:['小明', '小强', '小雪']
print(list(students.keys()))
# 输出:[2025, 2024, 2023]

3.3.6  d.items()

print(list(students.items()))
# 输出:[(2025, '小明'), (2024, '小强'), (2023, '小雪')]
for k, v in students.items():print(k, v)
# 输出:2025 小明
#      2024 小强
#      2023 小雪

4、集合

4.1 集合的表达

特点:
  1. 一系列互不相等的无序集合
  2. 元素必须是不可变类型(数字、字符串或元组),可视为字典的键
  3. 可看作没有值或者值为None的字典

teachers = {"小明", "小强", "小雪"}
print(teachers)
# 输出:{'小明', '小强', '小雪'}

4.2 集合的运算

4.2.1  S&T

返回一个新集合,包括同时在S和T中的元素

Chinese = {"小明", "小雪", "小强", "小红", "小绿"}
maths = {"小雪", "小绿", "小蓝"}
print(Chinese & maths)
# 输出:{'小绿', '小雪'}

4.2.2  S|T

返回一个新集合,包括所有在S和T中的元素

print(Chinese | maths)
# 输出:{'小绿', '小明', '小蓝', '小雪', '小强', '小红'}

4.2.3  S^T

返回一个新集合,包括集合S和T中的非共同元素

print(Chinese^maths)
# 输出:{'小红', '小蓝', '小明', '小强'}

4.2.4  S-T

返回一个新集合,包括在集合S但不在集合T中的元素

print(Chinese-maths)
# 输出:{'小红', '小明', '小强'}

4.3 集合的操作方法

4.3.1 增加元素——s.add(x)

stars = {"wjk", "wy", "yyqx"}
stars.add("薛之谦")
print(stars)
# 输出:{'wjk', 'yyqx', '薛之谦', 'wy'}

4.3.2 移除元素——s.remove(x)

stars.remove("wjk")
print(stars)
# 输出:{'薛之谦', 'yyqx', 'wy'}

4.3.3 集合的长度——len(s)

print(len(stars))
# 输出:3

4.3.4 集合的遍历

for star in stars:print(star)
# 输出:wy
#      yyqx
#      薛之谦

微语录:在年轻的飞奔里,你是迎面而来的风。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20094.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Breakout Tool

思科 CML 使用起来还是很麻烦的&#xff0c;很多操作对于习惯了 secure crt 或者 putty 等工具的网络工程师都不友好。 Breakout Tool 提供对远程实验室中虚拟机控制台与图形界面的本地化接入能力&#xff0c;其核心特性如下&#xff1a; Console 访问&#xff1a;基于 Telnet…

c语言易错题(选择)

这里给大家讲一下c语言部分遗留的选择题&#xff0c;用来巩固知识&#xff0c;一共13道题 1 答案解析 A&#xff1a;正确 不同的函数属于不同的作用域&#xff0c;因此不同的函数中定义相同名字的变量不会冲突 B&#xff1a;正确 在C语言中&#xff0c;函数的形参一般都是通过参…

《Python实战进阶》专栏 No2: Flask 中间件与请求钩子的应用

专栏简介 《Python实战进阶》专栏共68集&#xff0c;分为 模块1&#xff1a;Web开发与API设计&#xff08;共10集&#xff09;&#xff1b;模块2&#xff1a;数据处理与分析&#xff08;共10集&#xff09;&#xff1b;模块3&#xff1a;自动化与脚本开发&#xff08;共8集&am…

机器学习:k近邻

所有代码和文档均在golitter/Decoding-ML-Top10: 使用 Python 优雅地实现机器学习十大经典算法。 (github.com)&#xff0c;欢迎查看。 K 邻近算法&#xff08;K-Nearest Neighbors&#xff0c;简称 KNN&#xff09;是一种经典的机器学习算法&#xff0c;主要用于分类和回归任务…

初识Linux(9):程序地址空间

实验&#xff1a; 1 #include <stdio.h>2 #include <sys/types.h>3 #include <unistd.h>4 #include <string.h>5 6 int g_val 100;7 8 int main()9 {10 printf("我是一个进程: pid:%d,ppid:%d\n",getpid(),getppid());11 pid_t id for…

RadASM环境,win32汇编入门教程之六

;运行效果 ;RadASM环境&#xff0c;win32汇编入门教程之六 ;在上一个教程里面&#xff0c;我们学习了如何定义数据&#xff0c;那么在这一章节里面&#xff0c;我们来学习一下&#xff0c;再说明怎么把这些数据显示出来 ;下列就是显示出这些数据的示例程序&#xff0c;可以直接…

Flutter

项目文件目录结构介绍 注&#xff1a;创建 Flutter 项目名称不要包含特殊字符&#xff0c;不要使用驼峰标识 // TODO 开发中运行一个 Flutter 三种启动方式&#xff1a; Run 冷启动从零开始启动Hot Reload 热重载执行 build 方法Hot Restart 热重启重新运行整个 APP 代码分析…

【基础架构篇十一】《DeepSeek日志体系:ELK+Prometheus监控方案》

各位被日志淹没的工程师们,是否经历过这些抓狂时刻?——凌晨三点被报警短信吵醒,打开系统却看到: 日志文件以每秒100MB的速度疯狂膨胀关键报错信息在10TB日志里玩捉迷藏监控图表像心电图一样上蹿下跳服务器硬盘在报警声中发出垂死呻吟今天我们不聊什么基础的日志收集,直接…

JavaEE -JDBC池化思想 与 IDEA导包

1.JDBC概述 1.JDBC 的概述 * Java DataBase Connectivity Java数据库的连接。 * 目的使用 Java 的代码来操作数据库 * 需要使用 JDBC &#xff08; Java 数据库的连接&#xff09;规范来操作数据。 2.JDBC 的规范 * JDBC是一套接口规范 * JDBC的实现类都是由各个数据库的…

Pycharm打开的jupyter notebook无法在pycharm中关闭怎么解决

首先你可以先看一下你的pycharm的jupyter界面的输出&#xff1a; 可以看到第一行有个启动命令 找到这个–port的端口号&#xff0c;现在我们可以走下面的步骤&#xff0c;假设你找到的是–port47187 &#xff1a; 步骤 1&#xff1a;定位占用端口的进程&#xff08;Linux/Mac…

电磁铁的磁芯材质

电磁铁的磁芯通常采用软铁材质&#xff0c;因其具有高磁导率和低矫顽力&#xff0c;使得电磁铁能够在通电时迅速产生强磁场&#xff0c;断电后磁场又能迅速消失。 一、电磁铁与磁芯材质 电磁铁是一种利用电流产生磁场的装置。其核心部件——磁芯&#xff0c;对电磁铁的性能有着…

网络安全等级保护测评(等保测评):全面指南与准备要点

等保测评&#xff0c;全称为“网络安全等级保护测评”&#xff0c;是根据《网络安全法》及《网络安全等级保护条例》等法律法规&#xff0c;对信息系统进行安全等级划分&#xff0c;并依据不同等级的安全保护要求&#xff0c;采用科学方法和技术手段&#xff0c;全面评估信息系…

24蓝桥省赛B-数字接龙

#include<bits/stdc.h> using namespace std; const int N13; int mp[N][N],flag,n,k; bool vis[N][N]; int f[N][N][N][N];//存储路径,用于判断是否斜着走,是本题剪枝的难点 vector<int>ans; vector<int>res; int dx[]{-1,-1,0,1,1,1,0,-1}; int dy[]{0,1,1…

基于豆瓣2025电影数据可视化分析系统的设计与实现

✔️本项目旨在通过对豆瓣电影数据进行综合分析与可视化展示&#xff0c;构建一个基于Python的大数据可视化系统。通过数据爬取收集、清洗、分析豆瓣电影数据&#xff0c;我们提供了一个全面的电影信息平台&#xff0c;为用户提供深入了解电影产业趋势、影片评价与演员表现的工…

React实现自动滚动表格

在 React 中实现一个自动滚动的表格&#xff0c;可以通过 CSS 动画和 JavaScript 定时器来实现。以下是一个完整的示例代码&#xff0c;包含示例数据和自动滚动功能。 实现思路&#xff1a; ** 自动滚动&#xff1a;** 使用 setInterval 实现表格的自动滚动。 手动滚动&…

2024年GESP09月认证Scratch一级试卷

2024年GESP09月认证Scratch一级试卷分数&#xff1a;100 题数&#xff1a;17 一、单选题(共10题&#xff0c;每题3分&#xff0c;共30分) 01020304050607080910AACBCABCDD 1、据有关资料&#xff0c;山东大学于1972年研制成功DJL-1计算机&#xff0c;并于1973年投入运行&…

Qt常用控件之按钮QPushButton

按钮QPushButton QPushButton 在 Qt 中用于表示一个按钮控件&#xff0c;它继承自抽象 QAbstractButton 类。 QPushButton属性 属性说明text按钮中的文本。icon按钮中的图标。iconSize按钮中图标的大小。shortCut按钮对应的快捷键。autoRepeat按钮是否会重复触发&#xff08…

【PHP】php+mysql 活动信息管理系统(源码+论文+数据库+数据库文件)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 【PHP】php 活动信息管理系统&#xff08;源码论文…

搭建一个 Spring Boot 项目,解决jdk与springboot版本不匹配

搭建一个 Spring Boot 项目 方式一&#xff1a;使用 Spring Initializr Spring Initializr 是一个基于 Web 的工具&#xff0c;用于快速生成 Spring Boot 项目的基础结构。 访问 Spring Initializr 网站&#xff1a;https://start.spring.io/配置项目信息&#xff1a; …

基于SpringBoot的小区运动中心预约管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…