Python入门教程+项目实战-10.2节: 列表的操作符

news2024/11/20 20:34:47

目录

10.2.1 列表中的常用操作符

10.2.2 []操作符: 索引访问列表

10.2.3 [:]操作符:列表的切片

10.2.4 +操作符:列表的加法

10.2.5 *操作符:列表的乘法

10.2.6 列表的关系运算

10.2.7 in操作符:查找元素

10.2.8 知识要点

10.2.9 系统学习python


10.2.1 列表中的常用操作符

列表类型是一种抽象数据类型,抽象数据类型定义了数据类型的操作方法,在本节的内容中,着重介绍通过操作符来对列表进行操作。

列表类型常用的操作符如下表所示:

10.2.2 []操作符: 索引访问列表

在9.2节的内容中介绍了如何通过索引来访问字符串中的字符。列表类型也是一种线性的序列结构,同字符串一样,可以通过索引来访问列表中的元素。

操作语法:

Python

element = list[index]

字符串是一种静态的数据类型,只能通过索引来读取字符,不能对字符进行修改。而列表类型可以通过索引来对元素进行修改。

Python中的索引分为正索引和负索引。正索引从0开始进行编号,表示数据集合中的第一个元素。负索引从-1开始编号,表示数据集合中的倒数第一个元素。正负索引值必须在有效的范围之内,否则会抛出越界访问的错误信息。对此不熟悉的同学,可以复习9.2节中的内容。

代码实例:

Python

# __desc__ = 通过索引来访问,以及修改列表中的元素
 
numbers = [1,2,3,4]
 
# 1.读取列表中的第一个元素
first_number = numbers[0]
 
# 2.读取列表中的最后一个元素
last_number = numbers[-1]
 
# 3.修改列表中的第一个元素
numbers[0] = 5
# numbers的输出为[5,2,3,4]
 
# 4.修改列表中的最后一个元素
numbers[-1] = 9
# numbers的输出为[5,2,3,9]

Python中的变量实际保存的是内存地址。将列表赋值给其它变量时,实际是将列表的内存地址进行赋值。赋值操作完成以后,对变量进行修改会影响到原先的列表。

代码实例:

Python

# __desc__ = 将列表变量赋值给其它变量
 
# 定义列表类型变量
numbers = [1,2,3,4]
 
# 将numbers赋值给变量container
container = numbers
# 赋值操作完成以后,container与numbers指向的是同一个列表
 
# 通过变量container对列表进行修改
container[0] = 5
# container的输出为[5,2,3,4]
 
'''
由于numbers与container指向的是同一个列表,所以
numbers的输出也为[5,2,3,4]
'''

对于上文的代码实例,同学们可以通过下图进行理解。numbers变量保存的是列表在内存中的地址。

将变量numbers赋值给变量container以后,变量container与变量numbers指向的都是同一个列表。

同学们可以在交互模式中进行验证,使用id来输出变量的内存地址:

>>> numbers = [1,2,3,4]
>>> container = numbers
>>> id(numbers)
2890924839944
>>> id(container)
2890924839944

列表的这种赋值特性,又称为浅复制。浅复制是指将内存地址进行拷贝。与浅复制相对的是深复制,深复制会将内存中的数据全部拷贝至新的内存空间。在进行深拷贝以后,不会影响原先的数据对象。在Python中对复合数据类型进行赋值时,执行的都是浅复制。

10.2.3  [:]操作符:列表的切片

切边操作语法同字符串的切片操作。对此不是很熟悉的同学,请复习9.2节中的内容。对列表执行切片操作的以后,返回的是一个新的列表。

操作语法:

Python

new_list = list[:]

代码实例:

Python

# __desc__ = 对列表执行切片操作
 
# 定义列表类型变量
numbers = [1,2,3,4]
 
container = numbers[0:2]
# container的输出为[1,2]
 
container = numbers[:2]
# container的输出为[1,2]
 
container = numbers[2:]
# container的输出为[3,4]
 
container = numbers[-3:-1]
# container的输出为[2,3]

10.2.4 +操作符:列表的加法

列表的加法是把两个列表中的元素合并到一个新的列表中。

操作语法:

Python

new_list = list0 + list1

代码实例:

Python

# __desc__ = 对列表执行加法操作
 
# 定义变量negative_numbers表示负数
negative_numbers = [-1,-2,-3,-4]
 
# 定义变量 positive_numbers表示正数
positive_numbers = [1,2,3,4]
 
# 定义变量 natural_numbers表示自然数
natural_numbers =  negative_numbers + positive_numbers
# natural_numbers的输出为[-1,-2,-3,-4,1,2,3,4]

10.2.5  *操作符:列表的乘法

"*" 操作符用来对列表进行重复输出,返回一个新的列表。

操作语法:

Python

new_list = list * number

参数number必须为整型数字。

代码实例

Python

# __desc__ = 对列表执行乘法操作
 
numbers = [-1,-2,-3]
new_numbers = numbers * 2
 
# new_numbers的输出为[-1,-2,-3, -1,-2,-3]

10.2.6 列表的关系运算

使用关系运算符来对列表进行关系运算,返回的结果为布尔类型。

操作语法:

Python

boolean = list0 > list1

代码实例:

Python

# __desc__ = 对列表执行乘法操作
 
left = [1,3,99]
right = [2]
 
result = left > right
# result的输出为False

列表的关系运算是按序进行比较的,这里的按序比较是从列表的第一个元素开始,逐元素进行比较。

只有在元素值相同,顺序也相同的情况下,两个列表才相等,否则以元素先后的大小关系来确定列表的大小关系。

比如在上文的代码中,虽然列表right只有一个元素,但是right中的首元素大于列表left中的第一个元素。这时Python会直接判定列表right大于列表left,即使列表left后面的元素都比列表right中的元素大。现在通过循环结构来模拟列表的关系运算。

代码实例:

Python

# __desc__ = 通过while循环来模拟列表的关系运算
 
left = [3,3,3,3,99,3]
right = [3,3,3,3,3,109]
 
length_of_left = len(left)
length_of_right = len(right)

# 计算最短长度
shortest = length_of_left  if length_of_left < length_of_right else length_of_right


"""
(1) ret为0表示两个列表相等
(2) ret为1表示列表left大于列表right
(3) ret为-1表示列表left小于列表right
"""
ret = 0

index = 0
while index < shortest:
    if left[index] > right[index]:
        ret = 1
        break
    elif left[index] < right[index]:
        ret = -1
        break
    index += 1
else:
    if length_of_left > length_of_right:
        ret = 1
    elif length_of_left < length_of_right:
        ret = -1

10.2.7  in操作符:查找元素

使用 "in" 操作符来判断元素是否存在于列表中,若存在返回值为布尔类型True,否则返回False。

操作语法:

Python

boolean = element in list

表示是否不存在时,需通过逻辑非运算符not:

Python

boolean = element not in list

代码实例:

Python

# __desc__ = 通过in操作符来执行元素查找
 
natural_numbers = [1,2,3,4,5,6,7,8,9]
number = 99
 
if number in natural_numbers:
  # 如果number存在与列表中,那么表达的输出为True
  print("{} in numbers:{}".format(number, natural_numbers))
else:
  print("there is not {} in numbers {}".format(number, natural_numbers))

10.2.8 知识要点

(1)列表类型是一种线性的序列结构,可以通过索引来访问列表中的元素。

(2)字符串是一种静态的数据类型,只能通过索引来读取字符,不能对字符进行修改。列表类型可以通过索引来对元素进行修改。

(3)Python中的变量保存的是内存地址。将列表赋值给其它变量时,实际是将列表的内存地址进行赋值。赋值操作完成以后,对变量进行修改会影响到原先的列表。

(4)在Python中对复合数据类型进行赋值,执行的都是浅复制。

(5)列表的关系运算是按序进行比较的,这里的按序比较是从列表的第一个元素开始,逐元素进行比较。只有在元素值相同,顺序也相同的情况下,两个列表才相等,否则以元素先后的大小关系来确定列表的大小关系。

10.2.9 系统学习python

 薯条老师简介:资深技术专家,技术作家,著有《Python零基础入门指南》,《Java零基础入门指南》等技术教程。薯条老师的博客:http://www.chipscoco.com, 系统学习后端,爬虫,数据分析,机器学习、量化投资。

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

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

相关文章

香港电讯牌照申请介绍

香港对无线电发射器具的进出口实施法律管制&#xff0e;《电讯条例》规定进出口手提电话的人士须持有许可证或无线电商牌照。例如&#xff1a;手机、3C类产品、手提电脑等无线电子产品&#xff0c;通关时须要出示的证件之一。 一、香港电讯牌照申请需提供资料&#xff1a;1、有…

py逆向-NSSCTF-[NISACTF 2022]ezpython

目录 题目&#xff1a; 学到的点&#xff1a; 题目&#xff1a; 之前没遇到过这样的题&#xff0c;看了大佬的wp了解很多&#xff0c;记录一下 放到ida中打开&#xff0c;尝试分析了一下&#xff0c;没头绪 看了题解知道是一道py逆向的题目&#xff0c;需要用到这个工具pyin…

Elasticsearch+filefeat+Kibana(EFK)架构学习

一. 安装ES7集群 准备三台服&#xff0c;最少配置2core4G,磁盘空间最少20G,并关闭防火墙设置集群免密登录&#xff0c;方便scp文件等操作参考集群免密登录方法下载es7的elasticsearch-7.17.3-x86_64.rpm包安装 yum -y localinstal elasticsearch-7.17.3-x86_64.rpm修改node1配…

【SpringMVC】SpringMVC(一:第一个SpringMVC项目)

文章目录1. SSM优化的方向2.SpringMVC的优点3. SpringMVC的优化方向4.SpringMVC执行流程5.第一个SpringMVC项目5.1 创建工程5.2 添加依赖5.3 替换web.xml5.4 开发流程5.4.1完成springmvc.xml文件的配置5.4.2在web.xml文件中注册SpringMVC框架。5.4.3 编写控制器5.4.4 开发页面&…

【Spring Boot】SpringBoot参数验证以及实现原理

文章目录前言SpringBoot参数验证技巧&#xff08;12个技巧&#xff09;一、使用验证注解二、使用自定义验证注解三、在服务器端验证四、提供有意义的错误信息五、将 i18n 用于错误消息六、使用分组验证七、对复杂逻辑使用跨域验证八、对验证错误使用异常处理九、测试你的验证逻…

天啊!炫云的这个智能优化太给力了,渲染费竟然降了这么多!

兄弟们&#xff0c;你们是不是有时候一不小心把自己某一个参数设置错了&#xff0c;导致自己提交到云渲染平台的效果图费用突然增多&#xff0c;找平台理论最后发现是自己参数设置错误导致的问题&#xff0c;又或者对自己的参数设置把握不准的&#xff1f;现在这些问题你都可以…

计算机颜色学---CIE 色度图以及饱和度处理

前言 了解颜色相关理论与成像知识&#xff0c;对于深入了解视觉相关算法与ISP算法而言十分重要&#xff0c;了解颜色理论&#xff0c;离不开CIE色度图&#xff1b; CIE 1931色度图相关知识 CIE 1931 Yxy色度图。外形形似马蹄&#xff0c;所以也叫“马蹄图”&#xff1b; 在色…

ViTPose

具体而言&#xff0c;ViTPose使用普通和非分层vit Transformer[14]作为backbone来提取给定人物实例的特征图&#xff0c;其中backbone通过掩蔽图像建模借口任务&#xff08;例如MAE[16]&#xff09;进行预训练&#xff0c;以提供良好的初始化。然后&#xff0c;下面的轻量级解码…

c++获取时间戳的方法总结

目录1. 系统级时间戳获取方法1.1 Windows系统获取时间间隔的方式1.2 Linux系统获取时间间隔的方式1.3 获取时间戳2. c语言获取时间戳1. 系统级时间戳获取方法 1.1 Windows系统获取时间间隔的方式 API说明 Windows平台下使用 GetLocalTime VOID GetLocalTime(LPSYSTEMTIME lp…

axios起步——介绍和使用 post请求

axios起步——介绍和使用基本用例post请求场景复现核心干货axios简介axios是什么&#xff1f;axios特性axios安装axios基本用例发起一个GET请求用axios发起POST请求发起一个POST请求发起多个POST请求利用json-server创建服务&#xff0c;发起四种请求场景复现 最近学习与前端相…

Vue:组件化开发

一、组件的使用 1、创建组件(结构HTML 交互JS 样式CSS) Vue.extend({该配置项和new Vue的配置项几乎相同&#xff0c;略有差别}) 区别&#xff1a;①创建vue组件的时候&#xff0c;配置项中不能使用el配置项。(但是需要使用template配置项来配置模板语句) ②配置项中的da…

Vue常用方法汇总【更新中】

文章目录vue-router 安装使用axios 安装使用vuex 安装使用插件使用方法&#xff08;含elementUI安装方法&#xff09;全局变量使用方法父子组件传值方法pythonvue 打包 windows 桌面应用fastApivue 实现 WebSockets 服务端推送在 docker 中使用 nginx 部署 vue 项目声明式路由导…

详解FreeRTOS中的信号量(semaphore)

信号&#xff0c;顾名思义最基础的作用是通知&#xff0c;量&#xff0c;表示数量&#xff0c;意思就是可以有多个信号。在不同的场景延伸下&#xff0c;还有同步和互斥访问资源的作用&#xff08;这都是通知作用的延伸&#xff09;。 当"量"没有限制时&#xff0c;…

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈(Eureka、Ribbon)

微服务技术栈导学 微服务技术是分布式架构&#xff08;把服务做拆分&#xff09;的一种 而springcloud仅仅是解决了拆分时的微服务治理的问题&#xff0c;其他更复杂的问题并没有给出解决方案 一个完整的微服务技术要包含的不仅仅是springcloud 微服务技术栈 包括什么 …

什么是远程办公,如何挑选远程办公软件

远程办公已经不再是新型工作模式&#xff0c;随着科技的发展和全球化的趋势&#xff0c;越来越多的企业和个人已经开始接受这种新型的工作模式。远程办公可以让员工在家里或者任何地方工作&#xff0c;不用去公司办公室&#xff0c;大大提高了员工的工作效率和生活质量。本文将…

hdfs命令行操作

文章目录1. 对文件夹进行操作1.1 ls:对路径进行访问1.2 mkdir:对路径进行创建1.3 rm:对路径进行删除2.对文件进行操作2.1在文件系统中创建空文件2.2上传本地文件到hdfs上2.3 从hdfs上下载文件到本地路径2.4 查看hdfs 上的文件内容2.5 对hdfs上的文件进行复制2.6 追加本地文件内…

微服务·入门·贰——注册中心nacos、eureka

文章目录1. 微服务问题解决服务治理问题1.1 问题抛出1.2 解决方法2 Eureka注册中心2.1 Eureka解决的问题2.2 Eureka的结构和作用2.2.1 Eureka的作用2.2.2 order-service如何得知user-service实例地址 &#xff1f;2.2.3 order-service如何从多个user-service实例中选择具体实例…

家政服务小程序实战开发教程019-我的预约功能(已完结)

我们上一篇讲解了用户注册的功能&#xff0c;注册完毕后页面需要显示用户的头像和昵称&#xff0c;并显示我的预约的菜单&#xff0c;本篇我们介绍一下如何开发。 1 显示用户头像和昵称 在未注册时我们显示了一个默认的头像&#xff0c;已注册需要显示用户的头像。思路是将未…

【零基础入门 Nginx】——万字文章通俗易懂

一、Nginx 简介 1️⃣ Nginx 概述 Nginx&#xff08;Engine X&#xff09; 是一个高性能的HTTP和反向代理服务器&#xff0c;特点是占有内存少&#xff0c;并发能力强。同时也提供了IMAP/POP3/SMTP服务 nginx可以作为静态页面的web服务器&#xff0c;同时还支持CGI协议的动态…

WebRTC 系列(二、本地通话,H5、Android、iOS)

WebRTC 系列&#xff08;一、简介&#xff09;​​​​​​​ 一、整体流程 有了上一篇 WebRTC 简介的基础&#xff0c;我们知道了 WebRTC 的工作流程&#xff0c;接下来就是需要用代码去实现这个流程了。对于不同端&#xff0c;实现起来的难易程度可能略微不同&#xff08;实…