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

《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. 只为行级…...

数据库开发规范

一、概述 ​ 本规范规定了,软件项目团队开发数据库的全流程规范。规范覆盖了数据库设计、管理及配套文件等。 二、项目阶段 ​ 项目阶段包括需求评审(需求分析阶段)、技术评审(方案阶段)、数据库开发&#xf…...

使用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…...

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

MMaDA: Multimodal Large Diffusion Language Models

CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...