Python 小高考篇(8)拓展

目录

  • 列表
    • 读取内容
    • 修改内容
    • for 循环遍历列表
    • 下标越界
  • ASCII码和字符的相互转换
  • 导入库
  • 进制转换
  • 结尾


本文由Jzwalliser原创,发布在CSDN平台上,遵循CC 4.0 BY-SA协议。
因此,若需转载/引用本文,请注明作者并附原文链接,且禁止删除/修改本段文字。
违者必究,谢谢配合。
个人主页:blog.csdn.net/jzwalliser

列表

列表可以看作是一大堆串在一起的变量,在python中可以像这样创建列表:

>>> lst1 = []
>>> lst2 = [1,2,3]

像这样,就创建了一个叫lst1的空列表,里面什么也没有,还创建了一个叫lst2的,它里面有三个元素,元素之间用逗号分隔,分别是数字 1 1 1 2 2 2 3 3 3。当然,列表中不仅可以存数字,还可以存字符串,甚至是列表内套列表。

>>> lst1 = [1,2,"345",6,"789"]
>>> lst2 = [114,514,[1919,"810"],"恶臭"]

读取内容

若想要读取列表中的内容,则可以用lst[n]的方法获得,其中n叫下标,像这样:

>>> lst = [1,2,3]
>>> lst[0]
1
>>> lst[1]
2
>>> lst[2]
3

解释一下:第1行(lst = [1,2,3])表示创建一个列表,第2行(lst[0])表示读取列表lst中的第0号元素,第3行表示读取第1号元素,第4行表示读取第2号元素。
那为什么是所谓“第0号”元素而不是第1号呢?因为在大部分编程语言中,数字都是从0开始数,而不是从1开始,python也不例外(for i in range(n)就是 从0开始的嘛)。所以想要读取列表最前面的元素, 虽然习惯上叫作“第1个元素”,但需要写作lst[0] ,千万别搞成lst[1]了。像这样推下来,习惯上 “第2个”就是lst[1],“第3个”就是lst[2],以此 类推。下标也可以是负的,比如lst[-1]表示倒数 第1个元素,lst[-2]表示倒数第2个。

>>> lst = [1,2,3,4,5]
>>> lst[-1]
5
>>> lst[-3]
3
>>> lst[-2]
4

修改内容

要想修该列表中某个元素的值也很简单:

>>> lst = [1,2]
>>> lst[0] = 3
>>> lst
[3, 2]
>>> lst[1] += 2
>>> lst
[3, 4]

直接把lst[n]当作是一个变量对待就可以了。
也可以往列表中增添元素:

>>> lst = [1,2]
>>> lst.append(5)
>>> lst
[1, 2, 5]
>>> lst += [8]
>>> lst
[1, 2, 5, 8]

删除元素:

>>> lst = [1,2,3,4,5]
>>> lst.pop()
5
>>> lst
[1, 2, 3, 4]
>>> lst.pop(1)
2
>>> lst
[1, 3, 4]
>>> lst.pop(2)
4
>>> lst
[1, 3]

for 循环遍历列表

与字符串类似,列表也可以通过len(lst)获取长度,只不过这样得到的就是元素个数:

>>> lst1 = [1,2,3,4,5,114,514]
>>> len(lst1)
7
>>> lst2 = []
>>> len(lst2)
0
>>> len([11,45,14])
3

因此,可以通过这种方法“过一遍”(遍历)整个列表:

lst = [1,5,6,7,1,5,2]
for i in range(len(lst)):print(lst[i],end=" ")

运行结果:

1 5 6 7 1 5 2

除此之外,还有一种遍历列表的方法:

lst = [1,5,6,7,1,5,2]
for i in lst:print(i,end=" ")

运行结果:

1 5 6 7 1 5 2

第一种方式代码略长,但可以知道当前是第几次循环;第二种方式更精简,适用于可忽略循环次数的情况。

下标越界

最后,要注意下标越界问题。看例:

>>> lst = [1,2]
>>> lst[4]
Traceback (most recent call last):File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in <module>start(fakepyfile,mainpyfile)File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in startexec(open(mainpyfile).read(),  __main__.__dict__)File "<string>", line 10, in <module>File "<string>", line 1, in <module>
IndexError: list index out of range

于是出错了。出错是因为列表内只有2个元素,却尝试读取python列表的第5号元素是什么……那当然出错啦。

ASCII码和字符的相互转换

在python中,有chr()ord()两个函数,它们作用相反:chr()用于将ASCII码转换为字符;ord()用于将字符转换为ASCII码。

>>> chr(48)
0
>>> chr(32) #空格>>> chr(65)
A
>>> ord("1")
49
>>> ord(" ")
32
>>> ord("a")
97
>>> ord("A")
65
>>> ord("Z")
90

导入库

通过import可以导入外部的库。什么意思呢?比如说,你想用python计算正弦值,怎么办?可以直接sin(15)吗?

>>> sin(15)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
NameError: name 'sin' is not defined. Did you mean: 'bin'?

很明显,python并不知道sin()是什么东西,所以 为了计算它们,我们现要用import语句导入整个数 “套件”(math),再用套件(严格来说应该叫“库” )里面的sin()函数(当然里面不止sin()函数):

>>> import math
>>> math.sin(15)
0.6502878401571168
>>> math.cos(15)
-0.7596879128588213
>>> math.tan(15)
-0.8559934009085188

上面这种方式是先导入库(套件),再使用里面的函数(工具)。当然,也可以只导入函数而不导入库,这就需要用到from ... import ...语句了:

>>> from math import sin
>>> sin(15)
0.6502878401571168
>>> tan(15)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
NameError: name 'tan' is not defined

由于只导入了sin()没导入tan()函数,因此胡乱使用会导致错误。解决办法是,一次性导入所需的函数,或着干脆全导进来:

>>> from math import sin,cos,tan
>>> sin(15)
0.6502878401571168
>>> cos(15)
-0.7596879128588213
>>> tan(15)
-0.8559934009085188
>>> from math import *
>>> sin(15)
0.6502878401571168
>>> cos(15)
-0.7596879128588213
>>> tan(15)
-0.8559934009085188

进制转换

在python中,可以很方便地将十进制转换为二进制、八进制和十六进制。先看一眼各个进制对应的英文及其缩写:

进制英文缩写
二进制BinaryBIN
八进制OctalOCT
十进制DecimalDEC
十六进制HexadecimalHEX

如,将十进制下的数字114514转换为二进制:

>>> bin(114514)
'0b11011111101010010'

解释一下结果是什么意思:前缀“0b”代表这是个二进制数,后面的“”是二进制数字。如果是八进制数则其前缀是“0o”,十六进制是“0x”。

>>> bin(114514)
'0b11011111101010010'
>>> oct(114514)
'0o337522'
>>> hex(114514)
'0x1bf52'

若将其它进制的数转换为十进制,则可以用int() 函数:

>>> int("1bf52",base=16)
114514
>>> int("337522",base=8)
114514
>>> int("11011111101010010",base=2)
114514

可见,int(num,base=n)是指将n进制数num转 换为十进制。

结尾

好啦,今天就分享到这里了,记得点赞加关注哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/62605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11.21c++中的函数

练习&#xff1a; 编写mystring类&#xff1a;拥有以下功能&#xff1a; 1.带参、无参构造函数&#xff0c;拷贝构造函数&#xff0c;析构函数 2.编写 append(const mystring r) 为当前字符串尾部&#xff0c;拼接新的字符串r 3.编写 isEqual(const mystring r) 判断当前字符串…

windbg使用定位内核内存泄露

零 打开驱动测试测试工具 verifier /standard /driver fileflt.sys 然后重启电脑等待生效 一 设置 Windows 内核调试的符号路径和模块加载 1. 设置微软符号服务器路径&#xff1a; 在 WinDbg 中&#xff0c;可以通过以下命令设置符号路径&#xff1a; .sympath srv*c:\s…

vue3使用monaco编辑器(VSCode网页版)

vue3使用monaco编辑器&#xff08;VSCode网页版&#xff09; 文章说明参考文章核心代码效果展示实践说明源码下载 文章说明 一直在找网页版的编辑器&#xff0c;网页版的VSCode功能很强大&#xff0c;这个monaco就是VSCode样式的编辑器&#xff0c;功能很强大&#xff0c;可以直…

Vue.js 组件开发进阶:构建可扩展的组件库

在构建大型应用或企业级前端项目时&#xff0c;往往需要将多个组件模块化、封装成可复用的组件库。这种组件库不仅能够大幅提升开发效率&#xff0c;还能确保一致的用户体验和易于维护的代码结构。Vue.js 作为一个渐进式的前端框架&#xff0c;其灵活的组件化设计使得开发高质量…

UWB数字钥匙安全测距和场景应用

1. CCC数字钥匙 2021年7月CCC将UWB定义为第三代数字钥匙的核心技术&#xff0c;并发布CCC R3&#xff08;第三代数字钥匙&#xff09;规范。 CCC R3是基于NFC/BLE/UWB作为基础的无线电技术的使用&#xff0c;该系统采用非对称密码技术对车辆和设备进行相互签名认证&#xff0…

SpringBoot小知识(2):日志

日志是开发项目中非常重要的一个环节&#xff0c;它是程序员在检查程序运行的手段之一。 1.日志的基础操作 1.1 日志的作用 编程期调试代码运营期记录信息&#xff1a; * 记录日常运营重要信息(峰值流量、平均响应时长……) * 记录应用报错信息(错误堆栈) * 记录运维过程数据(…

SAP Native SQL 的简单说明

Open SQL访问数据字典中声明的数据库表&#xff0c;不区分数据库类型&#xff0c;执行时会自动转换为对应的语句&#xff0c;且可以使用本地缓存。Native SQL使用特定于数据库的SQL语句,但是可以访问比Open SQL 更多的表&#xff0c;更多的操作&#xff0c;缺点也很明显&#x…

2024前端面试经验分享

一、简历 1、整理步骤 把自己过去做过的有亮点的事情整理一遍。项目经历&#xff0c;通过 star 法则来做&#xff0c;不赘述&#xff0c;网上很多人讲。需要突出的亮点见下面。 2、前端开发常见突出亮点&#xff1a; 性能优化代码优化组件封装框架原理项目推进、协调能力技…

IEEE 802.11s wifi mesh网络

IEEE 802.11s 是对 IEEE 802.11 标准的扩展&#xff0c;允许多个无线节点相互连接&#xff0c;而无需在它们之间有接入点&#xff08;AP&#xff09;。例如&#xff0c;如果您家里有一个 AP&#xff0c;您想将文件复制到另一台连接到相同 AP 的笔记本电脑 B&#xff08;与您的笔…

Git中HEAD、工作树和索引的区别

在Git版本控制系统中&#xff0c;HEAD、工作树&#xff08;Working Tree&#xff09;和索引&#xff08;Index&#xff09;是三个非常重要的概念&#xff0c;它们分别代表了不同的状态或区域&#xff0c;下面我将对这三个概念进行详细的解释。 HEAD 定义&#xff1a;HEAD是一…

ARP欺骗-监控网络

kali: 使用arp-scan -l 查看同个局域网 windows arp -a 查看地址的物理地址 192.168.21.2 对应的是00-50-56-f5-d5-f0 攻击利用: 我们要让目标ip的流量经过我的网卡,从网关出去 使用的开启 echo 1 > /proc/sys/net/ipv4/ip_forward 当为0时&#xff0c;我们不转发&…

HTML 画布:网页上的创意绘图板

HTML 画布:网页上的创意绘图板 HTML5的画布(Canvas)元素为网页开发者提供了一种在网页上绘制图形和动画的强大工具。它是HTML5标准的一部分,被设计为允许脚本语言(通常是JavaScript)动态渲染图形、图像和动画。在这篇文章中,我们将深入探讨HTML画布的各个方面,包括其基…

pycharm链接neo4j(导入文件)

1.新建csv文件 2.写入文件 3.运行代码 import csv from py2neo import Graph, Node# 连接到Neo4j数据库&#xff0c;使用Bolt协议 graph Graph("bolt://localhost:7687", auth("neo4j", "password"))# 读取CSV文件 with open(D:\\Users\\ran…

Lodash的debounce方法:优化你的函数调用

在JavaScript开发中&#xff0c;我们经常会遇到需要在特定事件触发后执行某些操作的情况&#xff0c;比如窗口调整大小、滚动、按键输入等。然而&#xff0c;如果这些事件被频繁触发&#xff0c;相应的函数也会被频繁调用&#xff0c;这可能导致性能问题。这时&#xff0c;Loda…

YOLO系列论文综述(从YOLOv1到YOLOv11)【第15篇(完结):讨论和未来展望】

总结 0 前言1 YOLO与人工通用智能&#xff08;AGI&#xff09;2 YOLO作为“能够行动的神经网络”3 具身人工智能&#xff08;EAI&#xff09;4 边缘设备上的YOLO5 评估统计指标的挑战6 YOLO与环境影响 YOLO系列博文&#xff1a; 【第1篇&#xff1a;概述物体检测算法发展史、YO…

数据结构4——栈和队列

目录 1.栈 1.1.栈的概念及结构 1.2栈的实现 2.队列 2.1队列的概念及结构 2.2队列的实现 1.栈 1.1.栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一段称为栈顶&#xff0c;另一端称为…

SSM搭建(1)——配置MyBatis

目录 一、框架概述 1.什么是JDBC&#xff1f; 2.JDBC基本流程 3.JDBC的缺点 二、MyBatis的入门程序 1. 创建数据库和表结构 2. MyBatis入门流程总结 3. MyBatis的入门步骤 &#xff08;1&#xff09; 创建maven的项目&#xff0c;创建Java工程即可。 &…

Stream API进行分组并收集某个属性到List

在Java中&#xff0c;使用Stream API进行分组并收集某个属性到List中是一种常见的操作。这可以通过Collectors.groupingBy和Collectors.mapping结合使用来实现。下面是一个具体的示例&#xff1a; 假设我们有一个Person类&#xff0c;其中包含name和age属性&#xff0c;我们想…

Zero to JupyterHub with Kubernetes上篇 - Kubernetes 离线二进制部署

前言&#xff1a; 纯个人记录使用。 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。 k8s二进…

阻塞式队列

目录 一、阻塞队列 阻塞队列的概念 生产者消费者模型 二、自定义实现阻塞队列 一、阻塞队列 阻塞队列的概念 队列我们并不默认&#xff0c;一提起队列&#xff0c;我们立马就能想到 "先进先出"的特性。 今天我们就来学习一下特殊的队列: 阻塞队列&#xff0c;它…