《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…...
wpa_ctrl接口简介和使用总结
参考: wpa_supplicant简介与基础使用总结-CSDN博客 wpa_cli核心操作总结-CSDN博客 认识wpa_ctrl接口 在嵌入式Linux的C语言开发中,与 wpa_supplicant 交互的标准方法就是使用它官方提供的 wpa_ctrl 接口。这个接口以一组简单的C函数形式提供,…...
Artisan烘焙软件终极指南:5步解决咖啡烘焙品质不稳定难题
Artisan烘焙软件终极指南:5步解决咖啡烘焙品质不稳定难题 【免费下载链接】artisan artisan: the worlds most trusted roasting software 项目地址: https://gitcode.com/gh_mirrors/ar/artisan 你是否曾为咖啡烘焙结果的不稳定性而烦恼?同一款咖…...
vue-pdf踩坑实录:从‘Cannot read properties of undefined’到完美预览的避坑指南
Vue-PDF实战避坑指南:从版本冲突到性能优化的全链路解决方案 1. 当控制台抛出"undefined catch"错误时 那个令人窒息的红色报错框突然出现在控制台——"Cannot read properties of undefined (reading catch)"。作为经历过三次类似场景的老手&a…...
5分钟极速上手:用Open-Lyrics让AI为你的音频自动生成专业字幕
5分钟极速上手:用Open-Lyrics让AI为你的音频自动生成专业字幕 【免费下载链接】openlrc Transcribe and translate voice into LRC file using Whisper and LLMs (GPT, Claude, et,al). 使用whisper和LLM(GPT,Claude等)来转录、翻译你的音频为字幕文件。…...
如何在Windows 11上搭建专业级Android开发环境:WSA完全指南
如何在Windows 11上搭建专业级Android开发环境:WSA完全指南 【免费下载链接】WSA Developer-related issues and feature requests for Windows Subsystem for Android 项目地址: https://gitcode.com/gh_mirrors/ws/WSA Windows Subsystem for Android&…...
Windows 环境 OpenClaw 部署详解|从安装到使用全流程
OpenClaw(小龙虾)Windows 一键部署教程|10 分钟搭建自动化数字员工 前言 OpenClaw(俗称小龙虾)是 2026 年热门的开源 AI 智能体,GitHub 星标突破 28 万,主打本地运行、低门槛、自动化执行。本…...
为什么你的Perplexity图标总返回404?深度逆向其图标CDN路由算法(附Python自动化探测脚本)
更多请点击: https://intelliparadigm.com 第一章:Perplexity图标资源搜索 Perplexity AI 官方未提供公开的图标资源包(如 SVG、Favicon 或 App Icon 套件),但开发者可通过合法合规方式获取其品牌视觉资产用于技术文档…...
Allegro 17.4 Via Array 实战:3分钟搞定PCB板边与铺铜区的屏蔽过孔阵列
Allegro 17.4 Via Array高效应用:从板边屏蔽到铺铜优化的实战解析 在高速PCB设计中,过孔阵列的应用早已超越了简单的电气连接功能。资深Layout工程师们发现,合理布置的过孔阵列能够显著提升板边屏蔽效果、优化电源平面阻抗分布,甚…...
从虚拟机到私有云:手把手教你用VirtualBox+CentOS 7搭建个人OpenStack学习环境
从虚拟机到私有云:手把手教你用VirtualBoxCentOS 7搭建个人OpenStack学习环境 在个人电脑上搭建OpenStack环境听起来像是企业级IT工程师的专属领域,但事实上,借助VirtualBox这样的免费虚拟化工具和CentOS 7的稳定性,任何人都可以在…...
别再只刷固件了!深入Proxmark3硬件层:AT91SAM7S512芯片与Bootrom.bin的救砖原理详解
深入Proxmark3硬件层:AT91SAM7S512芯片与Bootrom.bin的救砖原理详解 当你的Proxmark3设备突然"四灯全亮",USB连接失效,变成一块"砖头"时,大多数教程只会告诉你"短接测试点,用J-Link烧录bootr…...
