【Python学习(七)——序列、列表、元组、range、字符串、字典、集合、可变类型不可变类型】
Python学习(七)——序列、列表、元组、range、字符串、字典、集合、可变类型&不可变类型
本文介绍了序列、列表、元组、range、字符串、字典、集合、可变类型&不可变类型,仅作为本人学习时记录,感兴趣的初学者可以一起看看,欢迎评论区讨论,一起加油鸭~~~
心中默念:Python 简单好学!!!
(有其他编程语言基础,所以记录的可能对初步接触编程的同学不太友好,有问题欢迎留言)
序列
在python中,有这样一些类型,它们的成员是有序排列的,并且可以通过下标访问成员,这些类型称之为序列。
包括:列表、range、元组和字符串。
序列的通用操作
- len(item):计算容器中元素个数
- del(item):删除变量(del有两种方式)
- max(item):返回容器中元素最大值(如果是字典,只针对key比较)
- min(item):返回容器中元素最小值(如果是字典,只针对key比较)
- 切片:0123456789[::-2]---->97531(支持的数据类型:字符串、列表、元组)
- +:合并(字符串、列表、元组)
- *:重复(字符串、列表、元组)
- in:元素是否存在(字符串、列表、元组、字典)
- not in:元素是否不存在(字符串、列表、元组、字典)
-
= == < <=:元素比较(字符串、列表、元组)
列表
定义
- List(列表)是Python中使用最频繁的数据类型,在其他语言中通常叫做数组
- 专门用于存储一串信息
- 列表用==[ ]定义,数据之间使用,==分隔
- 列表的索引从0开始
- 索引就是数据在列表中的位置编号,索引又可以被称为下标
- 注意:从列表中取值时,如果超出索引范围,程序会报错
创建列表
语法:列表名=[元素1,元素2,…]
示例代码
# 列表的创建
list1 = [] #空列表
print(list1)
print(type(list1))
list2 = [1,2,3,False,True,'hello']
print(list2)
list3 = list() # 类型转换:把参数转换为列表
print(list3)
list3 = list('1234567') # 类型转换:str-->list
print(list3)# 列表的索引
print(list3[5])# 列表的切片
print(list3[2:6:2])#列表的加法和乘法
print(list3 + list2)
print(list3 * 3)# 列表的成员运算
print('1' in list3)
print('1' in [1,2,3,4])
print([1,2,3,4] < [2,3])# 内置函数 函数名()
print(len(list3)) # 求元素个数
print(max(list3)) # 求元素的最大值
print(min(list3)) # 求元素的最小值
# del list3 # 删除变量
# print(list3)
print('-' * 30)# 列表的遍历
for i in list2:print(i)
for i,j in enumerate(list2): # 枚举print(i,j)for i in range(len(list2)):print(i,list2[i])# 列表的常用方法method 变量.方法名()
# 添加元素
list3.append('666')
print(list3)
# 添加列表
list3.extend([1,2,3])
print(list3)
# 插入元素
list3.insert(2,'hello')
print(list3)
# 根据索引删除元素
list3.pop(3)
print(list3)
# 根据元素删除
list3.remove('7')
print(list3)
list3.append('hello')
print(list3)
list3.remove('hello')
print(list3)
# 清空列表
list3.clear()
print(list3)# 计算若干个人的平均年龄
age = [10,20,30,40,23,45]
# 直接求和sum()
print(sum(age)/len(age))
total = 0
for i in age:total += i
print(total / len(age))

元组
定义
- Tuple(元组)与列表类似,不同之处在于元组的元素不能修改
- 元组表示多个元素组成的序列
- 用于存储一串信息,数据之间使用,分隔
- 元组用()定义
示例代码
# 元组的创建
tuple1 = (1,2,3,True,'hello')
print(tuple1)
print(type(tuple1))
list1 = [1]
print(list1)
# 元组里只有一个元素时,加一个逗号
tuple2 = (1,) # ()除了定义元组,还是数学中优先运算符号
print(tuple2)
print(type(tuple2))
tuple3 = tuple() # tuple():类型转换
print(tuple3)
print(type(tuple3))
tuple4 = ()
print(tuple4)
print(type(tuple4))
tuple5 = tuple('hello') # str-->tuple
print(tuple5)
tuple6 = tuple([1,2,3,4]) # list-->tuple
print(tuple6)
list1 = list(tuple6) # tuple-->list
print(list1)
str1 = str(tuple6) # tuple-->str
print(str1)
print(type(str1))
print(str1[2])# 序列的通用操作
print('-'*30)
# 索引
print(tuple1[-1])
# 切片
print(tuple1[::-1])
# len
print(len(tuple1))
print(max(tuple6),min(tuple6))
# del
del tuple5
# print(tuple5)
# +
print(tuple1 + tuple6)
# *
print(tuple1 * 3)
# in
print(1 in tuple1)# 元组的常用方法
a = tuple1.count('hello') # 计数
print(a)
print(tuple1)
a = tuple1.index(2)
print(a)# 元组的遍历
print('-' * 30)
for i in tuple1:print(i)for index,value in enumerate(tuple1):print(index, value)for i in range(len(tuple1)):print(i, tuple1[i])

range
定义
- 系统提供的内建函数 range(start,end,[step=1]),生成一个等差序列[start,end]
- 注意序列属于不可变序列,不支持元素修改,不支持 + 和 * 操作
- range一般用于for-in循环遍历
- 原型:range([start,] stop [,step])
- 功能:生成列表
- 参数:
- start:表示列表起始值,包含,默认为0
- stop:表示列表结束值,但是不包含
- step:步长,默认为1
示例代码
# range(start, end, step)
print(list(range(10))) # end
print(list(range(2,10))) # start, end
print(list(range(2,10,3))) # start, end, stepfor i in range(3):print('hello')# 高斯求和
total = 0
for i in range(1000, 10001, 2):total += i
print(total)# 水仙花数:三位数,每一位数字的立方和 = 三位数本身
# 123 1^3+2^3+3^3 = 123
for i in range(100, 1000):a = i % 10 # 个位b = i % 100 // 10 # 十位 i // 10 % 10c = i // 100 # 百位if a ** 3 + b ** 3 + c ** 3 == i:print(i)# 使用字符串索引的方式
for i in range(100, 1000):t = str(i)a = int(t[2])b = int(t[1])c = int(t[0])if a ** 3 + b ** 3 + c ** 3 == i:print(i)

字符串
定义
- 字符串就是一串字符,是编程语言中表示文本的数据类型
- 在Python中可以使用一对双引号或者一对单引号定义一个字符串
- 字符串是以单引号或者双引号括起来的任意文本,也可以是以三引号引起来的任意文本
示例代码
s1 = 'hello world'# 序列的通用操作
print(s1 + 'mia')
print(s1 * 3)
print(len(s1))
print(max(s1),min(s1))
print(ord('w'))
print(ord(' '))
# del s1
print('s' in s1)
print('abcd' < 'abce')
print('cd' < 'abcd')# 字符串的遍历
for i in s1:print(i)
for index,value in enumerate(s1):print(index,value)
for i in range(len(s1)):print(i,s1[i])# 类型转换
print(str(12),type(str(12))) # int-->str
print(str([1,2,3,4]),type(str([1,2,3,4]))) # list-->str
print(str((1,)),type(str((1,)))) # tuple-->str# 常用方法
print(s1.islower())
print(s1.isupper())
print(s1.isdigit())
print(s1.count('o'))
print(s1.strip()) # 去掉空格
print(s1.split(' ')) # 分隔字符串
print(s1.find('o',5,8))
print('#'.join(['111','222','333'])) # 连接# 字符串的统计
s = input('请输入一篇文章:')
# 字母的个数、数字的个数、符号的个数
a, b, c = 0, 0, 0
for i in s:if i.isdigit():b += 1elif i.isalpha():a += 1else:c += 1
print(a, b, c)

字典
定义
- dictionary(字典)是除列表以外 python之中最灵活的数据类型
- 字典同样可以用来存储多个数据
- 通常用于存储描述一个物体的相关信息
- 和列表的区别:列表是有序的对象集合;字典是无序的对象集合
- 字典用{}定义
- 字典使用键值对存储数据,键值对之间使用==,==分隔
- 键key是索引
- 值value是数据
- 键和值之间使用==:==分隔
- 键必须是唯一的
- 值可以取任何数据类型,但键只能使用字符串、数组或元组
示例代码
# 字典的创建
d = {'name':'mia', # 键值对'gender':'female','name':'jack', # 键重复的话,会覆盖掉之前的值
}
print(d)
print(type(d))
d = {}
print(d)
print(type(d))
d = dict()
print(d,type(d))
d = {'name':'mia', # 键值对'gender':'female',
}d['height'] = 170
print(d)
# 获取键值对
print(d['name'])
# 修改键值对
d['gender'] = 'male'
print(d)# del(d)
# print(d)
# in
print('age' in d)# 字典的遍历
for i in d:print(i,d[i])
print('-' * 30)
for k, v in d.items():print(k,v)
for k in d.keys():print(k)
for v in d.values():print(v)# 字典的常用方法
d.pop('gender')
print(d)
a = d.copy()
print('a的键值对', a)
print(d.get('name'))
d.popitem() # 从后往前删一个,入栈push出栈pop
print('pop',d)
d.update({'age':18})
print(d)
d.clear()
print(d)

集合
定义
- 不允许有重复元素,如果添加重复元素,则会自动过滤,可以进行交集、并集的运算
- 是一种无序且无重复元素的数据结构
- 与dict类似,是一组key的集合(不存储value)
示例代码
# 集合的创建
s = set()
print(s,type(s))
s = {1,2,3,4,1,2}
print(s,type(s))
s = set([1,2,3,1]) # list-->set
print(s)
s = set((1,2,3)) # tuple-->set
print(s)
s = set('123') # str-->set
print(s)s = set({1:'a','a':2}) # dict-->set:默认取key
print(s)
# in
print(1 in s)
print(2 in s)
print(len(s))
print(max({1,2,3}),min({1,2,3}))
# del s
# print(s)
# 集合不支持索引!!
# 集合的遍历
print('-' * 30)
for i in s:print(i)# 常用方法
s.remove('a')
print(s)
s.update({2,3,4,5,6,7,6,5})
print(s)
s.add(9)
print(s)
s.add(1)
print(s)
# 交集 并集
s2 = {5,6,7,8,9}
print(s & s2)
print(s | s2)# 列表去重
score = [80,70,60,80,70,60,40]
s = set(score)
print(s)
d = {}
# 统计各个分数都有几个学生
for i in s:t = score.count(i)print('得分为%d的学生有%d个人' %(i,t))d[i] = t
print(d)
for k,v in d.items():print('得分为%d的学生有%d个人' % (k, v))

可变类型&不可变类型
不可变数据类型在创建后,其值就不能被改变。Python中的以下数据类型是不可变的:
- 数字(例如:int、float、complex)
- 字符串(例如:str,不支持使用索引的方式进行修改)
- 元组(例如:tuple)
- 布尔类型(例如:bool)
可变类型
可变数据类型的值可以在创建后被改变。Python中以下数据类型的可变的:
- 列表(例如:list)
- 字典(例如:dict)
- 集合(例如:set)
相关文章:
【Python学习(七)——序列、列表、元组、range、字符串、字典、集合、可变类型不可变类型】
Python学习(七)——序列、列表、元组、range、字符串、字典、集合、可变类型&不可变类型 本文介绍了序列、列表、元组、range、字符串、字典、集合、可变类型&不可变类型,仅作为本人学习时记录,感兴趣的初学者可以一起看…...
MATLAB常用建模方法——常用非参数检验
常用非参数检验 在用样本数据对正态总体参数作出统计判断(例如参数估计和假设检验)时,要求样本数据应服从正态分布,这种数据分布类型已知的总体参数的假设检验称为参数假设检验。 与参数假设检验相对应的还有非参数假设检验&#…...
【多线程初阶篇 ²】创建线程的方式
目录 二、多线程代码 1.继承Thread类 2.实现Runnable接口 3.匿名内部类 3.1 创建Thread⼦类对象 3.2 创建Runnable⼦类对象 4.lambda表达式(推荐) 小结: 🔥面试题:Java中创建线程都有哪些写法 二、多线程代码 …...
纵览!报表控件 Stimulsoft Reports、Dashboards 和 Forms 2025.1 新版本发布!
Stimulsoft 2025.1 新版发布,旨在增强您创建报告、仪表板和 PDF 表单的体验!此最新版本为您带来了许多改进和新功能,使数据处理更加高效和用户友好。亮点包括对 .NET 9 的支持、Microsoft Analysis Services 的新数据适配器、发布向导中适用于…...
游戏引擎学习第75天
仓库:https://gitee.com/mrxiao_com/2d_game_2 Blackboard: 处理楼梯通行 为了实现楼梯的平滑过渡和角色的移动控制,需要对楼梯区域的碰撞与玩家的运动方式进行优化。具体的处理方式和遇到的问题如下: 楼梯区域的过渡: 在三维空间中&#x…...
Java 23 集合框架详解:Set 接口及实现类(HashSet、TreeSet、LinkedHashSet)
📚 Java 23 集合框架详解:Set 接口及实现类(HashSet、TreeSet、LinkedHashSet) 📖 概述 Set 是 Java 集合框架中用于存储 无序、不重复元素 的接口。它的实现类包括 HashSet、TreeSet 和 LinkedHashSet,它…...
ARMv8架构 CortexR52+ 内核 coresight_soc400介绍
前言:笔者在工作中接触到了一款多核芯片,其采用的处理器为CortexR52,使用的架构为ARMv8,我通过CoreSight SOC-400组件完成了对该芯片烧录代码的开发。这里芯片型号就不透露了,本文仅介绍我自己从ARM官网上提供的R52核等…...
1.Python浅过(语法基础)
1.简介 Python是一种面向对象的解释型高级编程语言,是强类型的动态脚本语言。 解释型语言跨平台性比编译型语言(如c语言)好。 print("hello world")2.Bug,Debug 多看,多思考,多尝试、查资料、记录 3.prin…...
ioremap_nocache函数
ioremap_nocache 是 Linux 内核中用于将物理地址映射到内核虚拟地址空间的函数,特别是用于 I/O 内存映射,并且禁用缓存。 一、基本语法 void __iomem *ioremap_nocache(phys_addr_t phys_addr, size_t size); 二、基本功能 将物理内存地址映射到内核虚拟…...
【235. 二叉搜索树的最近公共祖先 中等】
题目: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一…...
构建智能企业:中关村科金大模型企业知识库的技术解析与应用
在数字化转型的浪潮中,企业对智能化知识管理的需求日益增长。知识作为企业的核心资产,其高效管理和应用对于提升企业运营效率和决策质量至关重要。中关村科金大模型企业知识库凭借其强大的技术架构和广泛的应用场景,成为构建智能企业的重要工…...
C++进阶——用Hash封装unordered_map和unordered_set
目录 前言 源码怎么说 为什么要兼容? 兼容的具体做法? 为什么要把Key转为整数(HashFcn)? 模拟实现 一、建立框架 二、迭代器 运算符重载 迭代器兼容大法 三、[ ]重载 四、实现不能修改key 实现及测试代码 …...
b612相机 13.5.5解锁会员hook
工具 lspatch(点击选最新版本下载) shizuku(点击选最新版本下载) SimpleHook(点击选最新版本下载) b612(自行百度下载) 效果图 教程 [{"packageName":"com.camp…...
iOS - 弱引用表(Weak Reference Table)
1. 基本数据结构 // 弱引用表的基本结构 struct weak_table_t {weak_entry_t *weak_entries; // 保存所有的弱引用对象size_t num_entries; // 当前存储的弱引用数量uintptr_t mask; // 哈希表大小掩码uintptr_t max_hash_displacement; /…...
C#语言的网络编程
C#语言的网络编程 引言 随着互联网的飞速发展,网络编程成为了软件开发中的一个重要领域。C#语言作为一种现代编程语言,凭借其丰富的类库、良好的可读性和强大的功能,广泛应用于开发各种网络应用程序。无论是Windows应用、Web应用还是云服务…...
【操作系统】课程 4调度与死锁 同步测练 章节测验
4.1知识点导图 处理机调度与死锁相关内容的文字整理: 基本准则 资源利用率:使系统中的处理机和其他所有资源都尽可能地保持忙碌状态。系统吞吐量:单位时间内系统所完成的作业数。公平性:使各进程都获得合理的CPU时间,而…...
如何查看已经安装的python版本和相关路径信息
如何查看已经安装的python版本和相关路径信息 本文目录: 一、通过命令行模式查询 1、通过命令where python 2、通过命令print(sys.executable) 二、在 Anaconda Navigator 中 三、只安装python的环境下 一、通过命令行模式查询 同时按windowR键,输入cmd&#x…...
设计模式-结构型-适配器模式
在软件开发中,随着系统的不断扩展和模块的不断增加,往往会遇到不同模块之间接口不兼容的情况。此时,如果我们能通过某种方式将一个接口转化为另一个接口,那么开发工作将变得更加灵活和高效。适配器模式(Adapter Patter…...
鸿蒙操作系统(HarmonyOS)
鸿蒙操作系统(HarmonyOS)是华为公司推出的一款面向未来、面向全场景的分布式操作系统。它旨在为用户提供一个更加智能、便捷和安全的操作环境,支持多种终端设备之间的无缝协作。在鸿蒙应用开发中,ArkUI作为官方推荐的用户界面开发…...
基于海思soc的智能产品开发(camera sensor的两种接口)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于嵌入式开发设备来说,除了图像显示,图像输入也是很重要的一部分。说到图像输入,就不得不提到camera。目前ca…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
