《Python编程实训快速上手》第二天--列表与元组
一、列表
1、理解
列表是一个值,包含由多个值构成的序列
2、元素查找
1)索引--取列表中的单个值
正数索引:同c语言中的数组
spam = [[1,2,3,4],["cat","dog"]]
print(spam[0][1])
#结果:2
负数索引:表示从右往左取值
spam = ["cat","dog","zebra","monkey"]
spam[-1] ----> "monkey"
spam[-2] ----> "zebra"
2)切片--去列表中的多个值
结果为一个列表
1)spam[整数1:整数2] : 整数1表示切片开始处的索引,整数2表示切片结束出的索引(不包括该位置元素)
spam = ["cat","dog","zebra","monkey"]
spam[0:4] ---> ["cat","dog","zebra","monkey"]
spam[1:3] ---> ["dog","zebra"]
2)整数1不写时表示从0开始,整数2不写时表示直到列表的末尾
spam = ["cat","dog","zebra","monkey"]
spam[:4] ---> ["cat","dog","zebra","monkey"]
spam[1:] ---> ["dog","zebra","monkey"]
3、列表长度
列表中元素个数表示列表的长度
取上述spam列表,其len(spam) == 4
4、改变元素的值
同数组
5、连接与复制
+列表用于连接,*整数表示复制
6、删除元素
使用del语句
spam = ["cat","dog","zebra","monkey"]
del spam[0] ----> spam = ["dog","zebra","monkey"]
7、遍历列表
1)使用range:range本质上返回的是列表值,使用for i in range(len(spam)):来遍历列表
2)使用enumerate:使用for index,item in enumerate(spam): 来遍历列表。其中idex表示列表索引,item表示该索引对应的元素,当我同时需要列表索引和其对应元素时用该方法方便
spam = ["cat","dog","zebra","monkey"]
for index,item in enumerate(spam):print(index,item)

8、判断元素是否在列表中
使用in和not in操作符
spam = ["cat","dog","zebra","monkey"]
"cat" in spam ----> True
"howdy" not in spam ----> True
9、多重赋值
保证变量个数与列表长度必须一致
cat = ["fat","black","loud"]
size,color,disposition = cat
10、random.choice()和random.shuffle()与列表一起使用
1)random.choice()表示随机选择列表中某一个表项并返回
2)random.shuffle()表示就地对列表进行重新排序,不产生新列表
11、列表中的方法(就地解决)
1)查找--index()
传入一个值,若该值在列表中,则返回其索引;不再则报ValueError错误
spam = ["cat","dog","zebra","monkey"]
try:print(spam.index("cat"))print(spam.index("cow"))
except ValueError:print("Index Error")

2)增加--insert(),append()
insert(参数1,参数2):参数1表示新值的索引,参数2表示参数要插入的新值
append(元素)只能向列表尾部进行添加元素
spam = ["cat","dog","zebra","monkey"]
spam.insert(1,"world")
print(spam)
spam.append("cow")
print(spam)

3)删除--remove()
remove(元素),若元素多次出现,则只删除第一次出现的值,若该元素不存在,则报错ValueError
kips:如果我已经知道该元素索引了,那么我可以用del来直接删除该元素
4)排序--sort()
默认顺序排序,若想逆序排序,则sort(reverse=True);
列表中元素类型一致才可以排序,否则报错TypeError;
对字符串排序时使用的是ASCⅡ字符顺序方式,因此有大小写区别;
若按照普通字典顺序排序,则写为sort(key=str.lower)
5)反转--reverse()
12、序列数据类型
包括列表,字符串,range()返回的范围对象以及元组
!!!只要是序列数据类型,前边提到的对列表进行查看的操作都可以使用
因为字符串是常量不可变,因此不能对字符串进行修改操作,若想修改字符串,则使用切片和连接构造一个“新的”字符串
二、元组
1、理解
元组是列表数据类型的不可变形式
将列表中的[]改为()即为元组
当元组中只有一个元素时,在末尾加一个逗号,告诉编译器这是一个元组,而不是其他类型
print(type((1)))
print(type((1,)))

2、元组、列表类型转化
使用tuple()和list()函数实现
3、可变值与不可变值
对于可变值而言,a=b说明id(a)==id(b)
对于不可变值而言,a=b说明id(a)!=id(b)
函数传参同上
4、copy模块
使用copy.copy()函数可以用来复制列表或字典的可变值,相当于创建了一个新的列表或字典
使用copy.deepcopy()函数用来处理列表中嵌套列表的情况
三、小程序:Conway的生命游戏
import random,time,copy
width = 5
height = 5nextCells = []
for i in range(height):row = []for y in range(width):if random.randint(0,1) == 0:row.append("#")else:row.append(" ")nextCells.append(row)while True:print("\n\n\n\n\n")currentCell = copy.deepcopy(nextCells)for i in range(height):for j in range(width):print(currentCell[i][j],end="")print()for x in range(width):for y in range(height):leftCoord = (x-1) % widthrightCoord = (x+1) % widthupCoord = (y-1) % heightdownCoord = (y+1) % heightnumNeighbors = 0if currentCell[leftCoord][upCoord] == "#":numNeighbors += 1if currentCell[x][upCoord] == "#":numNeighbors += 1if currentCell[rightCoord][upCoord] == "#":numNeighbors += 1if currentCell[leftCoord][y] == "#":numNeighbors += 1if currentCell[rightCoord][y] == "#":numNeighbors += 1if currentCell[leftCoord][downCoord] == "#":numNeighbors += 1if currentCell[x][downCoord] == "#":numNeighbors += 1if currentCell[rightCoord][downCoord] == "#":numNeighbors += 1if currentCell[x][y] == "#" and (numNeighbors == 2 or numNeighbors == 3):nextCells[x][y] = "#"elif currentCell[x][y] == " " and numNeighbors == 3:nextCells[x][y] = "#"else:nextCells[x][y] = " "time.sleep(1)
相关文章:
《Python编程实训快速上手》第二天--列表与元组
一、列表 1、理解 列表是一个值,包含由多个值构成的序列 2、元素查找 1)索引--取列表中的单个值 正数索引:同c语言中的数组 spam [[1,2,3,4],["cat","dog"]] print(spam[0][1]) #结果:2 负数索引&…...
jangow靶机
先改jangow的ip设置,无ip地址,重启jangow虚拟机时候快速按E这个键盘,进入到编辑模式,找到ro这个位置,写入ro rw signin init/bin/bash ,ctrlx保存 下一步需要更改网卡名字为ens33,可以直接…...
使用UDP协议传输视频流!(分片、缓存)
背景 最近在开发工作中遇到需要两台本地设备之间进行视频流的传输的情况。但是团队一来没有这方面的专业人才,二来视频流的传续数据量很大,针对TCP和UDP的具体选择也不明确。 本文是在上诉背景之下进行的研究和开发工作。 目录 背景 UDP和TCP协议的…...
Pinia小菠萝(状态管理器)
Pinia 是一个专为 Vue 3 设计的状态管理库,它借鉴了 Vuex 的一些概念,但更加轻量灵活。下面将详细介绍如何使用 Pinia 状态管理库: 安装 Pinia 使用 npm:在项目目录下运行npm install pinia。使用 yarn:在项目目录下运…...
Python知识点:基于Python工具,如何使用Web3.py进行以太坊智能合约开发
开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 基于Python工具Web3.py进行以太坊智能合约开发 简介 智能合约是区块链技术的核…...
【简信CRM-注册安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...
ssm+vue694基于Java的药店药品信息管理系统的设计与实现
博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…...
Sentinel微服务保护
目录 雪崩问题 解决雪崩问题的方法: 我们使用sentinel组件实现微服务的保护 一:下载sentinel 二.启动sentinel 三.访问:localhost:8080 默认的账号和密码都是sentinel 微服务整合sentinel 一.导入sentinel依赖 二.在application.yml配置…...
喜讯!实在Agent智能体入选《2024年度最佳企业服务AI产品榜》
10 月 30 日,硅星人主办的首届 AI 创造者大会(ACC)于北京中关村盛大举行。此次大会旨在为 AI 产业生态的共建者构筑一个多元化的交流平台。大会邀请了硅星人创始人兼 CEO 骆轶航、国家地方共建具身智能机器人创新中心 CTO 唐剑、百度智能云应…...
Aop+自定义注解实现数据字典映射
数据字典 Web项目开发中,字典表的一般都会存在,主要用来给整个系统提供基础服务。 比如男女性别的类型可以使用0和1来进行表示,在存储数据和查询数据的时候,就可以使用字典表中的数据进行翻译处理。 再比如之前做的一个项目中宠物…...
大语言模型(LLM)入门级选手初学教程 III
指令微调 一、指令数据的构建 包括任务描述(也称为指令)、任务输入-任务输出以及可选的示例。 Self-Instruct 指令数据生成:从任务池中随机选取少量指令数据作为示例,并针对Chat-GPT 设计精细指令来提示模型生成新的微调数据…...
STM32G0xx使用LL库将Flash页分块方式存储数据实现一次擦除可多次写入
STM32G0xx使用LL库将Flash页分块方式存储数据实现一次擦除可多次写入 参考例程例程说明一、存储到Flash中的数据二、Flash最底层操作(解锁,加锁,擦除,读写)三、从Flash块中读取数据五、测试验证 参考例程 STM32G0xx HAL和LL库Flash读写擦除操…...
SAP B1 认证考试习题 - 解析版(三)
前一篇:《SAP B1 认证考试习题 - 解析版(二)》 题目纯享版合集:《SAP B1 认证考试习题 - 纯享版》 五、运费(附加费用) 57. 以下哪个选项能够影响库存商品的价格 A. 仅为总量级别的附加费用 B. 只为行级…...
数据库开发规范
一、概述 本规范规定了,软件项目团队开发数据库的全流程规范。规范覆盖了数据库设计、管理及配套文件等。 二、项目阶段 项目阶段包括需求评审(需求分析阶段)、技术评审(方案阶段)、数据库开发…...
使用python向钉钉群聊发送消息
使用python向钉钉群聊发送消息 一、在钉钉群中新建机器人二、使用代码发送消息 一、在钉钉群中新建机器人 在群设置中添加机器人 选择自定义 勾选对应的安全设置 完成后会展示webhook,将地址复制出来,并记录,后面会用到 二、使用代码发送消…...
YOLOv11改进:SE注意力机制【注意力系列篇】(附详细的修改步骤,以及代码,与其他一些注意力机制相比,不仅准确度更高,而且模型更加轻量化。)
如果实验环境尚未搭建成功,可以参考这篇文章 ->【YOLOv11超详细环境搭建以及模型训练(GPU版本)】 文章链接为:YOLOv11超详细环境搭建以及模型训练(GPU版本)-CSDN博客 -------------------------------…...
STM32 基于HAL库和STM32cubeIDE的应用教程 (二)--GPIO的使用
如果有什么不懂的地方欢迎私聊博主,欢迎小白,博主必一一解答。 在 STM32 中,GPIO(通用输入输出)是与外部硬件接口进行交互的主要方式之一。STM32 HAL 库提供了简洁的接口来配置和控制 GPIO 引脚。下面是使用 STM32 HA…...
【毫米波雷达(七)】自动驾驶汽车中的精准定位——RTK定位技术
一、什么是RTK? RTK,英文全名叫做Real-time kinematic,也就是实时动态。这是一个简称,全称其实应该是RTK(Real-time kinematic,实时动态)载波相位差分技术。 二、RTK的组装 如上图所示&#x…...
Transformer和BERT的区别
Transformer和BERT的区别比较表: 两者的位置编码: 为什么要对位置进行编码? Attention提取特征的时候,可以获取全局每个词对之间的关系,但是并没有显式保留时序信息,或者说位置信息。就算打乱序列中token…...
linux 加载uPD720201固件
硬件 jetson orin nano jetpack 35.5.0 uPD720201是瑞萨推出的怕pcie扩展usb3.0芯片,支持flash主动加载与在系统被动加载 本文介绍如何做到没接flash情况下由系统加载固件 在uPD720201没接spi flash时候nano启动会报XhciDxe错误而自动重启,首先需要在ue…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
