《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…...

C语言中的信号量semaphore详解
在C语言中,**信号量(Semaphore)**是一种常用的同步机制,用于控制多个线程或进程对共享资源的访问。信号量可以实现类似于锁的效果,但更为灵活,适用于并发编程场景。 1. 什么是信号量 信号量可以看作是一个…...

0087__DirectX11 With Windows SDK--02 顶点/像素着色器的创建、顶点缓冲区
DirectX11 With Windows SDK--02 顶点/像素着色器的创建、顶点缓冲区-CSDN博客...

Windows换机华为擎云(银河麒麟V10+麒麟9000C CPU)后,使用selenium的程序怎么办(20241030)
原本的 seleniumChrome 已无法正常工作。chromedriver 报错:不支持 Linux/aarch64。 1、尝试Firefox、edge驱动。Firefox有一个geckodriver版本与Firefox版本的对照表,我看了一下,感觉他们是始终跟进新技术的。银河麒麟的很多库都是几年前的…...

linux 下 signal() 函数的用法,信号类型在哪里定义的?
--------------------------------------------------- author: hjjdebug date: 2024年 11月 07日 星期四 14:47:33 CST description: linux 下 signal() 函数的用法 --------------------------------------------------- signal 是linux 下最基础的进程通讯机制…...

享元模式及其运用场景:结合工厂模式和单例模式优化内存使用
介绍 享元模式(Flyweight Pattern)是一种结构型设计模式,它通过共享对象来减少内存使用,尤其是对于大量相似对象的场景。享元模式通常与工厂模式和单例模式结合使用,从而有效地控制和复用对象的创建。在享元模式中&am…...

【物联网技术】ESP8266 WIFI模块在STA模式下实现UDP与电脑/手机网络助手通信——UDP数据透传
前言:完成ESP8266 WIFI模块在STA模式下实现UDP与电脑/手机网络助手通信——实现UDP数据透传 STA模式,通俗来说就是模块/单片机去连接路由器/热点来通信。 UDP协议,是传输层协议,UDP没有服务器和客户端的说法。 本实验需要注意,wifi模块/单片机与电脑/手机需要连接在同一个…...

【SQL Server】华中农业大学空间数据库实验报告 实验一 数据库
实验目的 熟悉了解掌握SQL Server软件的基本操作与使用方法,认识界面,了解其两个基本操作系统文件,并能熟练区分与应用交互式与T-SQL式两种方法在SQL Server中如何进行操作;学习有关数据库的基本操作,包括:…...

操作系统页面置换算法Java实现(LFU,OPT,LRU,LFU,CLOCK)
FIFO先进先出算法 java import java.util.LinkedList; import java.util.Queue; public class Main { //先进先出的思想 是 用一个队列去模拟数据 如果当前不存在就是发生缺页中断了 就需要添加 如果已经满了 将队头的元素出队 即可 //先进先出 就是一个数组 frameCount publi…...

Request和Response
前言 这一节主要讲的是Request和Response还有一些实例 1. 介绍 就是这两个参数 WebServlet("/demo7") public class ServletDemo7 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletExcepti…...

【青牛科技】GC8549替代LV8549/ONSEMI在摇头机、舞台灯、打印机和白色家电等产品上的应用分析
引言 在现代电子产品中,控制芯片的性能直接影响到设备的功能和用户体验。摇头机、舞台灯、打印机和白色家电等领域对控制精度、功耗和成本等方面的要求日益提高。LV8549/ONSEMI等国际品牌的芯片曾是这些产品的主要选择,但随着国内半导体技术的进步&…...