发布时间:2026/8/22 23:01:12
Python学习日记2 一 列表和元组1序列概述1列表列表是一种可修改的序列可以存储多个数据。特点使用[]表示元素之间用逗号分隔可以增加、删除、修改元素。示例edward [Edward Gumby, 42]列表可以嵌套列表中的元素也可以是列表edward [Edward Gumby, 42] john [John Smith, 50] database [edward, john]结果[ [Edward Gumby, 42], [John Smith, 50] ]2元组元组也是一种序列。特点使用()表示不可修改适合保存固定数据。因为某些数据结构要求内容不能改变所以才会有元组的提出示例person (Edward Gumby, 42)两者比较3容器Python 中可以包含其他对象的数据结构称为容器。常见容器1序列元素按照顺序排列例如list tuple元组 str特点每个元素有编号索引。a [A,B,C]2映射例如dict字典特点通过键访问数据student { name:Tom, age:20 }访问student[name]3集合set集合不属于序列不属于映射元素无序元素不能重复。s {1,2,3}2通用的序列操作21 序列索引1正向索引序列索引从0 开始示例greeting Hello对应索引索引 0 1 2 3 4 字符 H e l l o访问greeting[0]结果H2负索引Python 支持从右向左访问元素负索引规则字符 H e l l o 正索引 0 1 2 3 4 负索引 -5 -4 -3 -2 -13字符串也是序列Python 没有单独的字符类型示例Hello[1]结果e说明字符串本质上是由多个字符组成的序列4直接对序列使用索引示例Python[0] P等价于s Python s[0]5函数返回值也可以索引如果函数返回一个序列可以直接索引示例fourth input(Year: )[3]输入Year: 2005执行fourth结果56实例根据日期输出月份输入年份 月份 日期然后根据月份索引列表获取月份名称months [ January, February, March, ... ]注意索引偏移问题用户输入Month: 8列表索引January → 0 February → 1 March → 2 ... August → 7所以months[month_number-1]需要减1.使用索引生成日期后缀示例endings [st,nd,rd] 17 * [th] \ [st,nd,rd] 7 * [th] \ [st]通过endings[day_number-1]来获取日期后缀。总结months [ January, February, March, April, May, June, July, August, September, October, November, December ] # 一个列表其中包含数131对应的结尾 endings [st, nd, rd] 17 * [th] \ [st, nd, rd] 7 * [th] \ [st] year input(Year: ) month input(Month (1-12): ) day input(Day (1-31): ) month_number int(month) day_number int(day) # 别忘了将表示月和日的数减1这样才能得到正确的索引 month_name months[month_number-1] ordinal day endings[day_number-1] print(month_name ordinal , year)22 序列切片切片格式序列[start:end:step]1基本切片示例numbers [1,2,3,4,5,6,7,8,9,10]获取索引3到6的元素numbers[3:6]结果[4,5,6]2省略开始或结束索引从开头开始numbers[:3] 等价于 numbers[0:3] 结果[1,2,3]到末尾结束numbers[7:] 等价于 numbers[7:10] 结果 [8,9,10]复制整个序列numbers[:] 结果 [1,2,3,4,5,6,7,8,9,10]3负索引切片示例numbers[-3:] 表示获取最后3个元素 结果 [8,9,10]注意numbers[-3:-1] 不包含-1只包含-3 结果[8,9]4切片步长示例numbers[0:10:2] 表示从0开始每隔2个元素取一次。 结果[1,3,5,7,9]5使用负步长反向切片示例numbers[::-1] 表示反转序列 结果[10,9,8,7,6,5,4,3,2,1]6切片边界规则切片特点第一个索引包含第二个索引不包含示例numbers[3:6] 取 索引 3 4 5 不取 索引 67步长方向规则正步长从左向右numbers[1:8:2] 结果[2,4,6,8]负步长从右向左numbers[8:1:-2] 结果[9,7,5,3]23 序列相加Python 中可以使用运算符连接相同类型的序列支持元组列表和字符串1列表连接使用可以合并两个列表 [1,2,3] [4,5,6] [1,2,3,4,5,6]结果两个列表元素按顺序拼接2字符串连接字符串也属于序列可以使用。 Hello, world! Hello, world!3不同类型序列不能相加虽然列表和字符串都是序列但是类型不同不能连接 [1,2,3] world 是错误 报错 TypeError:can only concatenate list (not str) to list4)需要转换类型时如果想连接不同类型需要先转换。[1,2,3] list(abc) 结果[1,2,3,a,b,c] str(123) abc 结果123abc24 序列乘法Python 中可以使用*运算符重复序列生成新的序列。序列 * n表示将序列重复n次1字符串乘法示例 python * 5 结果pythonpythonpythonpythonpython2列表乘法 [42] * 10 [42,42,42,42,42,42,42,42,42,42]3使用乘法初始化列表sequence [None] * 10 结果[None,None,None,None,None, None,None,None,None,None]其中None表示空值没有具体内容。4注意不要使用【】*n错误使用sequence [] * 10结果【】原因空列表重复多少次仍然为空(5) 序列乘法规则序列乘法要求左边必须是序列右边必须是整数示例正确abc * 3 结果abcabcabc 错误abc * 36实例利用字符串乘法绘制图形sentence input(Sentence: ) screen_width 80 text_width len(sentence) box_width text_width 6 left_margin (screen_width - box_width) // 2其中 * left_margin表示生成指定数量的空格实现居中。绘制边框顶部 - * (box_width-2) 中间| * text_width |25 Python序列成员资格Python 可以使用in运算符判断某个元素是否存在于序列中。元素 in 序列返回结果1存在-True2不存在-False1字符串成员判断permissions rw w in permissions 结果True2列表成员判断users [mlh,foo,bar] mlh in users 结果True3子序列判断对于字符串in判断的是子字符串是否存在$$$ in $$$ Get rich now!!! $$$ 结果True注意列表判断的是完整元素[1,2] in [[1,2],[3,4]] 结果True 2 in [[1,2],[3,4]] 结果False4实例用户名和密码验证#数据库 database [ [albert,1234], [dilbert,4242], [smith,7524], [jones,9843] ] #用户输入 username input(User name: ) pin input(PIN code: ) #判断 if [username, pin] in database: print(Access granted)原理#输入 albert 1234 #形成 [albert,1234] #然后检查是否存在于database中5长度最大值最小值常用函数len获取序列长度numbers [100,34,678] len(numbers) 结果3max获取最大值max(numbers) 结果678min获取最小值min(numbers) 结果34max和min参数除了序列还可以是多个参数序列max([2,3]) 多个参数max(2,3)3列表3.1 列表list以及基本的列表操作列表list是 Python 中最重要的数据结构之一。特点有序可修改mutable支持索引、切片、拼接、重复等序列操作创建列表id1 names [Alice, Bob, Cecil]1使用list创建列表list()可以将其他序列转换为列表格式list(sequence) list(hello) 结果[h,e,l,l,o]2)修改列表元素列表可以通过索引直接修改元素。list[index] value x [1,1,1] x[1] 2 print(x) 结果[1,2,1]注意索引必须存在否则会报错。3删除列表元素使用del删除指定元素格式del list[index] 示例names [Alice,Beth,Cecil,Dee-Dee,Earl] del names[2] 结果[Alice,Beth,Dee-Dee,Earl] Cecil被删除4切片赋值列表切片不仅可以读取还可以修改格式list[start:end] new_sequence替换元素name list(Perl) name[2:] list(ar) 原列表P e r l 被替换为 r l → a r插入元素切片赋值可以插入不同长度的数据numbers [1,5] numbers[1:1] [2,3,4] 结果[1,2,3,4,5]原因numbers[1:1] 表示一个空切片相当于插入位置删除切片将切片赋值为空列表list[start:end] []示例numbers [1,2,3,4,5] numbers[1:4] [] 结果[1,5] 等价于del numbers[1:4]5切片赋值特点普通赋值只能替换一个元素x[1] 10切片赋值可以替换多个元素插入多个元素删除多个元素。x[1:3] [10,20,30]3.2 列表方法列表list是 Python 中最常用的数据结构之一。列表是可变序列可以通过方法直接修改内容。格式list.method(arguments)1append()添加元素在列表末尾添加一个元素格式list.append(value) 示例 lst [1,2,3] lst.append(4) print(lst) 结果[1,2,3,4]特点直接修改原列表不返回新列表。2clear()清空列表删除列表中的所有元素示例lst [1,2,3] lst.clear() print(lst) 结果[] 等价于 lst[:] []3copy()复制列表创建列表副本示例 a [1,2,3] b a.copy() b[1] 4 结果 a [1,2,3] b [1,4,3]区别直接赋值是两个变量指向同一个列表复制是创建新的列表4count()统计元素出现次数格式list.count(value)示例x [a,b,a,c] x.count(a) 结果25extend()扩展列表将另一个序列中的元素逐个加入列表示例 a [1,2,3] b [4,5,6] a.extend(b) 结果[1,2,3,4,5,6]extend() 与 的区别使用创建新列表原列表不变。使用extend()直接修改原列表效率更高。6index()查找元素位置返回元素第一次出现的索引格式list.index(value)示例names [we,are,the,knights] names.index(the) 结果2如果元素不存在那么就会报错names.index(abc) 报错ValueError7insert()插入元素格式list.insert(index,value)示例numbers [1,2,3,5,6] numbers.insert(3,4) 结果[1,2,3,4,5,6]也可以使用切片效果是相同的numbers[3:3] [4]8pop()删除并返回元素删除列表元素并返回删除的值默认删除最后一个x [1,2,3] x.pop() 返回3 列表变为[1,2]指定位置删除x.pop(0)pop() 应用栈结构栈后进先出示例stack [] stack.append(1) stack.append(2) stack.pop() 返回29remove()删除指定值格式list.remove(value)示例x [a,b,c] x.remove(b) 结果[a,c]注意只删除第一次出现的值不存在会报错10reverse()反转列表原地反转列表示例x [1,2,3] x.reverse() 结果[3,2,1]特点修改原列表不返回结果如果不想修改原列表可以使用reversed() 示例list(reversed(x))11sort()排序对列表进行排序示例x [4,6,2,1,7] x.sort() 结果[1,2,4,6,7]特点修改原列表返回None如果不想修改原先的列表可以使用sorted()生成排序副本y sorted(x)特点返回新列表原列表不变12sort() 高级参数reverse降序x.sort(reverseTrue) 结果[7,6,4,2,1]key指定排序规则格式list.sort(keyfunction) 示例按照字符串的长度排序 words [add,a,aaaa] words.sort(keylen) 结果[a,add,aaaa]4元组元组tuple是一种不可修改的序列。与列表list类似有序支持索引和切片可以存储多个元素。4,1 创建元组1使用逗号创建元组最重要的标志是逗号1,2,3 结果(1,2,3)2使用括号创建(1,2,3) 结果(1,2,3)注意括号不是元组的核心逗号才是。4,2 空元组创建空元组() 结果4,3 单元素元组(42) 结果42这不是元组而是普通整数。原因Python 认为(42)只是数学括号正确写法(42,) 结果(42,)单元素元组必须加逗号4,4 元组拆包元组可以直接赋值给多个变量x,y,z 1,2,3 等价于 (x,y,z) (1,2,3) 访问x[ ]4,5 tuple() 函数tuple()可以将序列转换为元组格式tuple(sequence)字符串转换tuple(abc) 结果(a,b,c)列表转换tuple([1,2,3]) 结果(1,2,3)如果参数本身是元组tuple((1,2,3))不会复制直接返回原元组4,6 元组索引和切片索引x (1,2,3) x[1] 结果2切片x[0:2] 结果(1,2)返回的仍然是元组4,7 元组为什么不能修改错误x (1,2,3) x[1] 5 报错TypeError因为元组不可变创建后元素固定。4,8 元组的应用场景1字典key字典的 key 必须不可变point (3,5) # 可以作为key2保护固定数据point (10,20)这些不希望被修改的数据

相关新闻

2026/8/22 23:01:12

2026年自动发货软件选择指南:多场景第三方横评

2026年自动发货软件选择指南:多场景第三方横评一、开篇:2026年自动发货软件行业发展背景1. 行业整体市场动态随着电商行业的持续分化发展,多平台经营已经成为多数商家的常规选择。根据2026年上半年电商行业报告显示,超过62%的虚拟…

2026/8/22 22:56:12

【路径规划】基于matlab遗传优化模拟退火算法求解避障路径规划问题matlab代码

1 简介近年来, 路径规划一直是机器人学中的研究热 点之一.它研究的目的是在有障碍物的环境中, 为机 器人寻找从起始点到目标点并且能够避开障碍物的 合理 、有效的路径.其中涉及到环境信息的获取 、环 境的表示 、路径执行、知识的获取等 .国内外已有不 少学者对移动机器人路径…

2026/8/23 0:07:04

游戏自动化怎么做到的:MAA 明日方舟助手拆解

游戏自动化怎么做到的:MAA 明日方舟助手拆解 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitcode.com/…

2026/8/23 0:07:04

免费的 Ollama 界面:不开终端,本地模型如何开箱即用

免费的 Ollama 界面:不开终端,本地模型如何开箱即用 【免费下载链接】ollama-ui Simple HTML UI for Ollama 项目地址: https://gitcode.com/gh_mirrors/ol/ollama-ui ollama-ui 是一个免费的单页 Ollama 界面:在浏览器里直接下拉选择…

2026/8/23 0:07:04

Burp Suite 中文汉化插件:一个 Agent 参数让界面变中文

Burp Suite 中文汉化插件:一个 Agent 参数让界面变中文 【免费下载链接】BurpSuiteCN-Release BurpSuite汉化发布 项目地址: https://gitcode.com/gh_mirrors/bu/BurpSuiteCN-Release BurpSuiteCN-Release 是一个 Burp Suite 中文汉化发布项目。它不改原始程…

2026/8/23 0:02:04

Nacos开启权限验证后403错误排查:从认证授权原理到Spring Cloud实战

1. 问题现场:从“裸奔”到“上锁”后的403风暴最近在搞微服务架构升级,其中一个核心动作就是把注册中心Nacos从“裸奔”模式切换到开启权限验证。这个操作本身不复杂,无非是在application.properties里加几行配置,重启一下服务。本…

2026/8/23 0:02:04

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:02:04

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:02:04

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:02:04

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:02:04

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:02:04

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/21 15:40:01

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/21 15:40:01

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/22 1:39:53

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…