政安晨:示例演绎Python的列表

列表和你可以用它们做的事:包括索引、切片和对象变动 (变异-Mutation) 。

列表

在Python中,列表表示有序的值序列。以下是如何创建列表的示例:

primes = [2, 3, 5, 7]

我们可以将其他类型的元素放在列表中:

planets = ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune']

我们甚至可以创建一个列表的列表:

hands = [['J', 'Q', 'K'],['2', '2', '2'],['6', 'A', 'K'], # (Comma after the last element is optional)
]
# (I could also have written this on one line, but it can get hard to read)
hands = [['J', 'Q', 'K'], ['2', '2', '2'], ['6', 'A', 'K']]

一个列表可以包含不同类型的变量的混合。

my_favourite_things = [32, 'raindrops on roses', help]
# (Yes, Python's help function is *definitely* one of my favourite things)

索引

您可以使用方括号访问单个列表元素。

离太阳最近的行星是哪个?Python使用零-based索引,因此第一个元素的索引为0。

planets[0]

下一个离地球最近的行星是什么?

planets[1]

哪个行星离太阳最远?

列表末尾的元素可以使用负数访问,从-1开始:

planets[-1]

planets[-2]

切片

什么是前三个行星?我们可以使用切片来回答这个问题:

planets[0:3]

planets[:3]表示我们要求取planets列表中从索引0开始,但不包括索引3的元素。

起始索引和结束索引都是可选的。如果省略起始索引,则默认为0。所以我可以将上面的表达式重写为:

planets[:3]

如果我省略了结束索引,那么就是假定它(我省略的结束索引)是列表的长度。

planets[3:]

即上述表达意为“从索引3开始,给我所有的行星”。

当进行切片时,我们也可以使用负数索引。

# All the planets except the first and last
planets[1:-1]

# The last 3 planets
planets[-3:]

更改列表

列表是“可变的”,这意味着它们可以被“原地”修改。

修改列表的一种方法是将其赋值给一个索引或切片表达式。

例如,假设我们想将火星重命名为:

planets[3] = 'Malacandra'
planets

嗯,那确实是个够长的名字。我们通过缩短前三个行星的名字来弥补吧。

planets[:3] = ['Mur', 'Vee', 'Ur']
print(planets)
# That was silly. Let's give them back their old names
planets[:4] = ['Mercury', 'Venus', 'Earth', 'Mars',]

列表函数

Python有几个用于处理列表的有用函数。

len函数返回列表的长度:

# How many planets are there?
len(planets)

sorted函数返回一个已排序的列表版本:

# The planets sorted in alphabetical order
sorted(planets)

sum 做的事情符合你的预期:

primes = [2, 3, 5, 7]
sum(primes)

我们之前使用min和max函数来获取几个参数中的最小值或最大值。但是我们也可以传入一个单独的列表参数。

小插曲:对象

到目前为止,我已经经常使用术语“对象” - 你可能甚至已经读到了在Python中一切都是对象。那是什么意思呢?

简而言之,对象携带一些东西。你使用Python的点语法来访问这些东西。

例如,在Python中,数字携带了一个关联的变量叫做imag表示它们的虚部。(除非你在进行一些非常奇怪的数学运算,否则你可能永远不会需要使用它。)

x = 12
# x is a real number, so its imaginary part is 0.
print(x.imag)
# Here's how to make a complex number, in case you've ever been curious:
c = 12 + 3j
print(c.imag)

注:imaginary 的含义是“虚部”的意思。

一个对象携带的东西也可以包括函数。附加到对象的函数叫做方法。(附加到对象的非函数的东西,比如imag,叫做属性)。

举个例子,数字有一个叫做bit_length的方法。同样,我们使用“点”语法来访问它:

x.bit_length

为了真正地调用它,我们需要加上括号:

x.bit_length()

另外:如果你已经在做练习了,你实际上已经在调用方法了。在练习笔记本中,q1、q2、q3等都是具有名为check、hint和solution的方法的对象。

就像我们可以将函数传递给help函数一样(例如,help(max)),我们也可以传递方法:

help(x.bit_length)

上面的例子非常难懂。迄今为止,我们看过的对象类型(数字、函数、布尔值)都没有你可能会用到的属性或方法。

但事实证明,列表有几种你将经常使用的方法。

列表方法

list.append通过在末尾添加一个项来修改列表:

# Pluto is a planet darn it!
planets.append('Pluto')

为什么上面的单元格没有输出?让我们通过调用help(planets.append)来查看文档。

另外:append是所有类型为list的对象都具有的方法,不仅限于planets,所以我们也可以调用help(list.append)。然而,如果我们尝试调用help(append),Python会抱怨没有名为"append"的变量存在。"append"这个名称只存在于list中,它不像内置函数max或len那样作为一个单独的名称存在。

help(planets.append)

这部分告诉我们list.append方法没有返回任何值。但是如果我们检查planets的值,我们可以看到方法调用修改了planets的值。

planets

list.pop 移除并返回列表的最后一个元素。

planets.pop()

搜索列表

地球在行星的顺序中排第几?我们可以使用列表的.index方法来获取它的索引。

planets.index('Earth')

它排第三(即索引为2,从0开始计数!)。

冥王星(Pluto)位于哪个索引?

planets.index('Pluto')

噢,没错...

为了避免这样的不愉快惊喜,我们可以使用in运算符来确定列表是否包含特定的值:

# Is Earth a planet?
"Earth" in planets

# Is Calbefraques a planet?
"Calbefraques" in planets

还有一些我们还没有涵盖的有趣的列表方法。如果你想了解与特定对象关联的所有方法和属性,我们可以在对象本身上调用help()。例如,help(planets)将告诉我们所有列表方法:

help(planets)

(这里我没有贴全,大家自己尝试看看)

列表有很多方法,它们的名字看起来很奇怪,比如__eq__和__iadd__。现在不用担心这些方法太多。 (你可能永远不会直接调用这些方法。但是当我们使用索引或比较运算符的语法时,它们会在后台被调用。)最有趣的方法在列表的底部(如append,clear,copy等)。

元组

元组和列表几乎完全相同。它们只有两个不同之处。

1:创建元组的语法使用圆括号而不是方括号。

t = (1, 2, 3)
t = 1, 2, 3 # equivalent to above
t

2:它们不能被修改(它们是不可变的)。

t[0] = 100

元组经常用于具有多个返回值的函数。

例如,float对象的as_integer_ratio()方法返回一个分子和一个分母,以元组的形式返回:

x = 0.125
x.as_integer_ratio()

可以将这些多个返回值分别赋值如下:

numerator, denominator = x.as_integer_ratio()
print(numerator / denominator)

最后,我们终于对于经典的Python的朴实的技巧™,即交换两个变量有了一些了解!

a = 1
b = 0
a, b = b, a
print(a, b)

好啦,现在轮到你啦

最好的修行是实践,最好的学习是练习,Coding一下,试试吧。

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

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

相关文章

【C++】拷贝构造函数和赋值运算符重载详解

目录 拷贝构造函数 概念 特征 赋值运算符重载 运算符重载 赋值运算符重载 ​编辑前置和后置重载 ⭐拷贝构造函数 ⭐概念 拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存 在的类类型对象创建新…

【Java程序设计】【C00248】基于Springboot的摄影跟拍预定管理系统(有论文)

基于Springboot的摄影跟拍预定管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的摄影跟拍预定管理系统 本系统分为系统功能模块、管理员功能模块、摄影师功能模块以及用户功能模块。 系统功能模块&#xf…

回归预测 | Matlab实现CPO-CNN-LSTM-Attention冠豪猪优化卷积长短期记忆神经网络注意力机制多变量回归预测(SE注意力机制)

回归预测 | Matlab实现CPO-CNN-LSTM-Attention冠豪猪优化卷积长短期记忆神经网络注意力机制多变量回归预测(SE注意力机制) 目录 回归预测 | Matlab实现CPO-CNN-LSTM-Attention冠豪猪优化卷积长短期记忆神经网络注意力机制多变量回归预测(SE注…

【考研408】操作系统笔记

文章目录 [toc] 计算机系统概述操作系统的基本概念操作系统的概念和特征操作系统的目标和功能(**处理器管理、存储器管理、设备管理、文件管理、向用户提供接口、扩充机器**) 操作系统的发展与分类操作系统的运行环境操作系统的运行机制 操作系统的体系结…

Python(SQLite)executescript用法

SQLite 数据库模块的游标对象还包含了一个 executescript() 方法,这不是一个标准的 API 方法,这意味着在其他数据库 API 模块中可能没有这个方法。但是这个方法却很实用,它可以执行一段 SQL 脚本。 例如,如下程序使用 executescr…

CVEMap:用于查询、浏览和搜索 CVE 的开源工具

CVEMap 是一个开源命令行界面 (CLI) 工具,可让您探索常见漏洞和暴露 (CVE)。它旨在提供一个简化且用户友好的界面来导航漏洞数据库。 尽管 CVE 对于查明和讨论安全漏洞至关重要,但它们的快速增长和偶尔夸大的严重性往往会导致误导性信息。 安全专家必须…

(bean配置类的注解开发)学习Spring的第十三天

bean配置类的注解开发 问题提出 用类充当配置文件 applicationcontext.xml : Configuration注解标识此类为配置类,替代原有xml文件 看原配置文件applicationcontext.xml代码 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http:/…

EasyCVR视频融合平台如何助力执法记录仪高效使用

旭帆科技的EasyCVR平台可接入的设备除了常见的智能分析网关与摄像头以外 &#xff0c;还可通过GB28181协议接入执法记录仪&#xff0c;实现对执法过程的全称监控与录像&#xff0c;并对执法轨迹与路径进行调阅回看。那么&#xff0c;如何做到执法记录仪高效使用呢&#xff1f; …

MMDB是什么

MMDB (MaxMind DB) 是一种专为地理位置服务和其他网络相关数据设计的二进制文件格式。这种格式主要被用于存储如 IP 地址定位数据之类的信息&#xff0c;使得应用程序可以快速且高效地查询 IP 地址的地理位置、自治系统信息、网络提供商信息等。MMDB 格式由 MaxMind 公司开发&a…

react 使用react-seamless-scroll实现无缝滚动

文章目录 1. 实现无缝滚动效果2. react-seamless-scroll 无缝滚动案例介绍3. react 项目集成3.1 项目引入 cssSeamlessScroll 滚动组件3.2 完整代码3.2.1 newBet.tsx 代码3.2.2 index.module.scss 1. 实现无缝滚动效果 实现单步向下滚动点击更多展开&#xff0c;收起&#xff0…

Quartus IP学习之ISSP(In-System Sources Probes)

一、ISSP IP概要&#xff1a; ISSP&#xff1a;In-System Sources & Probes Intel FPGA IP 作用&#xff1a; 分为In-System Sources与In-System Probesn-System Sources&#xff0c;输入端&#xff0c;等价于拨码开关&#xff0c;通过输入板载FPGA上的拨码开关状态改变…

Unity DOTS中的baking(三)过滤baking的输出

Unity DOTS中的baking&#xff08;三&#xff09;过滤baking的输出 默认情况下&#xff0c;在conversation world&#xff08;baker和baking system运行的环境&#xff09;下产生的所有entities和components&#xff0c;都会作为baking环节的输出。在baking结束时&#xff0c;U…

Android学习之路(29) Gradle初探

前言: 大家回想一下自己第一次接触Gradle是什么时候&#xff1f; 相信大家也都是和我一样&#xff0c;在我们打开第一个AS项目的时候&#xff0c; 发现有很多带gradle字样的文件&#xff1a;setting.gradle, build.gradle,gradle.warpper,以及在gradle文件中各种配置&#xff…

将给定的二维数组旋转90度numpy.rot90()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将给定的二维数组旋转90度 numpy.rot90() [太阳]选择题 以下说法中正确的是? import numpy as np a np.array([[1,1,1],[2,2,2],[3,3,3]]) print("【显示】a:\n",a) print("…

MIT 6.5830 概述

简介 同MIT6.824系列类似&#xff0c;6.4830是关于Database System的一门课程&#xff0c;官方主页链接。 从课程信息可知&#xff0c;理论课分为 21 个课时&#xff0c;3个问题集&#xff0c;4个实验&#xff0c;1个项目。课程的 ppt 可以下载&#xff0c;对应的课堂回放可以…

H5 加密(MD5 Base64 sha1)

1. 说明 很多的时候是避免不了注册登录这一关的&#xff0c;但是一般的注册是没有任何的难度的&#xff0c;无非就是一些简单的获取用户输入的数据&#xff0c;然后进行简单的校验以后调用接口&#xff0c;将数据发送到后端&#xff0c;完成一个简单的注册的流程&#xff0c;那…

零基础Vue框架上手;git,node,yarn安装

项目搭建环境&#xff1a; git安装&#xff1a;Git - 安装 Git (git-scm.com)&#xff08;官网&#xff09; 下载路径&#xff1a;Git - Downloading Package (git-scm.com)&#xff1b;根据自己电脑下载相对应的安装包 ​ 点next ​ 点next&#xff0c;点到最后安装就行。…

开关电源学习之Buck电路

一、引言 观察上方的电路&#xff0c;当开关闭合到A点时&#xff0c;电流流过电感线圈&#xff0c;形成阻碍电流流过的磁场&#xff0c;即产生相反的电动势&#xff1b;电感L被充磁&#xff0c;流经电感的电流线性增加&#xff0c;在电感未饱和前&#xff0c;电流线性增加&…

前端vue/react项目压缩图片工具@yireen/squoosh-browser

想要在前端项目中压缩图片&#xff0c;然后再上传到后端保存&#xff0c;就需要一个压缩工具的帮助&#xff0c;暂时有两个依赖库可以选择&#xff1a;image-conversion和yireen/squoosh-browser&#xff0c;看了官方仓库地址和更新时间等详情&#xff0c;发现还是yireen/squoo…

Apache POl Excel

目录 介绍 Apache POl的应用场景&#xff1a; 入门使用 通过POI创建Excel文件并且写入文件内容 通过POI读取Excel文件中的内容 介绍 Apache POl是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用POI在Java程序中对Miscrosoft O…