Python程序设计基础:列表与元组(一)

news2024/11/16 17:39:29

文章目录

  • 一、列表的表示与访问
    • 1、列表的表示
    • 2、列表的访问
  • 二、列表的元素操作
    • 1、元素的修改
    • 2、元素的增加
    • 3、元素的删除
    • 4、其他操作
  • 三、列表操作
    • 1、列表的遍历
    • 2、列表的排序
    • 3、列表的切片
    • 4、列表的扩充
    • 5、列表的复制
    • 6、列表的删除

一、列表的表示与访问

1、列表的表示

列表(list)用来有序存放一组相关数据,以便进行统一的处理。Python中,将一组数据放在一对方括号“[]”中即定义了一个列表,其中每个数据称作元素,元素和元素之间同逗号作为间隔,元素的个数被称为数组的长度。
例:

num = [1,2,3,4,5,6]
name = ["小黄","小刘","小王","小李","小张","小吴"]
mixone = [1,"小黄"]
mixtwo = [[1,"小黄"],[2,"小刘"]]

如上所示,在列表中可以保存全为数值、全为字符串或二者混合的元素,同时也允许列表充当元素。

2、列表的访问

列表中每个元素都对应一个位置编号,这个位置编号称为元素的索引,列表就是通过索引来访问元素的,其语法格式为:

列表名[索引]

索引编号是从0开始,向右依次加1,其访问方式和字符串相似,支持正向和反向两种索引方式。和字符串相似,列表也提供区间访问方式,采用[头下标:尾下标:步长]的方式,这种访问方式称为“切片”。
字符串的索引与切片
在这里插入图片描述
在上述代码中“list”用于将字符串转换成列表。

二、列表的元素操作

列表元素有序存放,并且可变。支持修改、添加和删除操作。

1、元素的修改

列表元素的修改只需要将新值赋给对应的索引元素,其格式如下:

列表名[索引]=新值

在这里插入图片描述

2、元素的增加

元素的增加方式主要有两种,append()方法和insert()方法。
append()方法:
append()方法用于在指定的列表尾部即最后一个元素的后面增加指定的新元素,其语法格式如下:

列表.append(新元素)

insert()方法:
insert()方法将指定的元素插入到列表中指定的位置,其位置用索引表示,语法格式如下:

列表.insert(索引,新元素)

在这里插入图片描述

3、元素的删除

元素的删除主要有三种,del命令、pop()方法、remove()方法。
del命令:
del命令是python内置的命令,用来删除指定的列表元素,语法格式如下:

del 列表[索引]

pop()方法:
pop()方法通过指定索引删除列表中对应的元素,其语法格式如下:

列表.pop(索引)

remove()方法:
和del命令、pop()方法不同的是,remove()方法不是根据索引删除元素,而是直接指定待删除元素的值,若列表中存在两个相同值的元素时,remove()方法会删除索引值较小的那个元素,语法格式如下:

列表.remove(元素值)

在这里插入图片描述

4、其他操作

除了对列表元素进行修改、增加、删除外,还有其他常见的四种列表元素操作方法:len()函数、运算符in和not in、index()方法、count()方法。
len()函数:
len()函数用来统计和返回指定列表的长度,其语法格式如下:

len(列表)

运算符in和not in:
运算符in和not in用来判断指定的元素是否存在于列表中,使用in时存在返回True,不存在返回False,not in则与之相反。其语法格式如下:

元素 in 列表
元素 not in 列表

index()方法:
index()方法用于查找元素在列表中的位置,若该元素在列表中存在,则返回其索引,存在多个则返回最小的索引值,不存在则直接报错,其语法格式如下:

列表.index(元素)

count()方法:
count()方法用来统计并返回列表中指定元素的个数,其语法格式如下:

列表.count(元素)

在这里插入图片描述

三、列表操作

列表的操作主要是指针对整个列表或部分列表进行处理。

1、列表的遍历

列表的遍历主要是指从头到尾对列表元素进行访问,常见的遍历方式有两种,range()函数和直接遍历。
range()函数:
range()函数主要和for循环一起使用配合索引号依次访问列表元素,其语法格式如下:

for i in range(n):
    列表[i]

在这里插入图片描述

直接遍历:
直接遍历是指直接利用for循环形式依次访问列表中的每个元素,其语法格式如下:

for 元素 in 列表

在这里插入图片描述

2、列表的排序

对列表中的元素进行排序主要有两种方式:sort()方法和sorted()函数。
sort()方法:
sort()方法对列表元素按照从小到大或从大到小的方式进行升序和降序排序,改变列表中元素的位置,默认为升序,其语法格式如下:

列表.sort()

可以在括号中加入reverse = True/False,若为True表示降序,False表示升序。
在这里插入图片描述
在这里插入图片描述

sorted()函数
sorted()函数对列表元素按照从小到大或从大到小的方式进行升序和降序排序,不改变列表中元素的位置,只生成排序之后的副本,默认为升序,其语法格式如下:

sorted(列表)

可以在括号中加入reverse = True/False,若为True表示降序,False表示升序。
在这里插入图片描述

排序时主要基于元素的ord()函数得到的编码值来进行,因此当元素统一为数字和英文字符排序时结果更加明晰。

3、列表的切片

列表的切片和前面介绍的字符串的切片方式一样直接指定起始索引和终止索引以及步长来提取切片,语法格式如下:

列表[起始索引:终止索引:步长]

注意事项如下:

  1. 缺“起始索引”时从索引“0”开始;
  2. 缺“终止索引”时默认到最后一个元素位置;
  3. 同时缺“起始索引”和“终止索引”时,默认取整个列表;
  4. 步长取值为1和省略的效果一样;
  5. 当“起始索引”大于“终止索引”,且“步长”为负值,表示逆向提取元素。
  6. 同时缺“起始索引”和“终止索引”时,且步长为“-1”,表示逆向取整个列表;
    在这里插入图片描述

4、列表的扩充

列表的扩充主要是指为列表增加新的列表,主要方法有三种:“+”运算、“*”运算以及extend()方法。
“+”运算:
“+”运算主要用于将两个列表连接起来,但是原始参与连接的两个列表并未发生任何变化,其语法格式如下:

列表1+列表2

“*”运算:
“*”运算主要用于将列表中的原始重复多遍,和“+”运算一样,其结果不过不使用赋值语句赋给具体的列表,则不会被保存,其语法格式如下:

列表*n

extend()方法:
extend()方法直接将新的列表添加到某个列表后面,原列表发生改变,其语法格式如下:

列表.extend(新列表)

在这里插入图片描述

5、列表的复制

对列表进行复制主要有三种方法来实现:切片、copy方法以及赋值方法。
切片方法:
切片方法主要是指在切片时同时缺省起始索引和终止索引,然后赋给新的列表,得到的新列表与原始列表一模一样。

列表1=列表2[:]

copy方法:
copy方法会通过复制的方式将原始列表中的元素赋给新的列表,它是深拷贝,新生成的列表是完全独立于原始列表的,其语法格式如下:

列表1=列表2.copy()

赋值方法:
列表之间的赋值是一种浅拷贝,仅仅是让原始列表多了一个新的名字,新列表和原始列表共用原始列表内容,当原始列表发生改变时,新列表也会发生相同的改变,语法格式如下:

列表1=列表2

在这里插入图片描述

6、列表的删除

列表的删除是指将整个列表包括其结构全部进行删除,其语法格式如下:

del 列表名

del命令既可以用来删除指定元素,也可以用来删除整个列表。
在这里插入图片描述

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

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

相关文章

自营外卖配送平台的商家如何对接第三方美饿的订单

自营外卖跑腿平台对接第三方美饿的好处 单说美团饿了么自身的流量优势,很多商家不能忽视,但是美团饿了么的高额配送成本与抽成,同样也不能忽视。很多商家希望选择自配送或者其他更划算的配送方式来节省成本。这时,区域性的自建外…

【Java】单例模式

单例模式 设计模式概述单例模式实现思路饿汉式懒汉式饿汉式 vs 懒汉式 设计模式概述 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式免去我们自己再思考和摸索。就像是经典的棋谱,不同的棋局,我…

AttributeError: module ‘collections‘ has no attribute ‘Iterable‘

vitables 出现 AttributeError: module collections has no attribute Iterable错误修改如下图:

PCIE转PMC载板

描述 这是一款被动适配卡,它支持通过要转换为 PCIe x4 通道边缘连接器的 AMC 接头,来选择 TI EVM;因此它可被插入一个台式计算机或使用 PCIe 接头的任何位置。选定的 TI EVM 支持 DSP 上的本地 PCIe。此卡作为适配器,需要可与 AMC…

Linux与Windows:操作系统的比较与技巧分享

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

Java 动态规划 Leetcode 62. 不同路径

代码展示&#xff1a; class Solution {public int uniquePaths(int m, int n) {//定义dp数组//二维数组多增加一行一列&#xff0c;方便对数组进行初始化int[][]dpnew int[m1][n1];//初始化dp[0][1]1;//填充数组for(int i1;i<m;i){for(int j1;j<n;j){dp[i][j]dp[i-1][j…

@Around踩坑记录

Around踩坑记录 先上结论&#xff1a; 如果你在定义切面的时候打算使用环绕通知➕定义注解的方式&#xff0c;那么在进行*Around*("(annotation(costTrace))") 类似这样的定义的时候&#xff0c;”costTrace“一定要与你定义切面中入参的参数名字一致&#xff0c;而…

【嵌入式Qt开发入门】Qt如何使用多线程——初识QThread

我们写的一个应用程序&#xff0c;应用程序跑起来后一般情况下只有一个线程&#xff0c;但是可能也有特殊情况。比如我们前几篇的例程都跑起来后只有一个线程&#xff0c;就是程序的主线程。线程内的操作都是顺序执行的。但试着想一下&#xff0c;我们的程序顺序执行&#xff0…

模拟日志数据

模拟日志数据。。 日志模拟器主要模拟站点的用户信息和用户行为日志数据 使用shell调用java类实现数据的生产 ! 所需文件如下: datagen.jar genlog.sh 注意: 存储数据的文件夹要预先创建好 Bash mkdir -p /tmp/doit/user_data mkdir -p /tmp/doit/log_data 将用来模拟生成…

【安全】Xsslabs(1~13)基于白盒测试浅析

目录 环境 关卡 level 1 level 2 level 3 level 4 level 5 level 6 level 7 level 8 扩展 level 9 level 10 level 11 level 12 level 13 总结 环境 PHP&#xff1a;php7.3.4nts 中间件&#xff1a;Nginx1.15.11 工具&#xff1a;Hackbar 关卡 level …

超长上下文处理:基于Transformer上下文处理常见方法梳理

原文链接&#xff1a;芝士AI吃鱼 目前已经采用多种方法来增加Transformer的上下文长度&#xff0c;主要侧重于缓解注意力计算的二次复杂度。 例如&#xff0c;Transformer-XL通过缓存先前的上下文&#xff0c;并允许随着层数的增加线性扩展上下文。Longformer采用了一种注意力…

【GLBCXX_3.4.21 not found】问题解决

问题描述 rootlocalhost:/home# rar -h rar&#xff1a;/lib64/libstdc.so.6 ,version "GLBCXX_3.4.21" not found 问题排查过程 下载相应的GCC源码&#xff0c;找到适合自己版本&#xff0c;这里选择是的是7.3.0 gcc源码下载地址&#xff1a;http://ftp.gnu.org/g…

fastadmin数据内容admin_id权限

/*** 是否开启数据限制* 支持auth/personal* 表示按权限判断/仅限个人* 默认为禁用,若启用请务必保证表中存在admin_id字段*/protected $dataLimit true;/*** 数据限制字段*/protected $dataLimitField admin_id;

第一次上传GitHub代码------教程、记录和踩雷

刚录用的一篇论文&#xff0c;编辑要求上传GitHub repo。 对于上传代码&#xff0c;本人是一无所知&#xff0c;写这篇博客记录一下 一. 创建代码仓库 点击右上角&#xff0c;选择New repository&#xff0c;来创建仓库&#xff1a; 根据提示&#xff0c;填写仓库的名称、描述…

TCP 协议(二)连接与断开

TCP 连接概述 TCP 协议是一种面向连接的、可靠的数据传输协议&#xff0c;同时 TCP 连接是全双工的&#xff0c;即连接的两端可以互传数据。在深入了解 TCP 连接之前&#xff0c;我们先来弄清楚整个 TCP 连接的过程&#xff0c;之后在深入整个数据报文结构来认识 TCP。 TCP连…

全网最全,adb常用命令大全(详细)全覆盖,看这篇就够了..

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 adb 模拟按键输入…

python subprocess执行外部命令常用方法

subprocess模块是Python标准库中的一个模块&#xff0c;用于创建和控制子进程。它提供了一种在Python程序中调用其他外部命令、执行系统命令和与系统进程进行交互的方法。常用的有两种方法&#xff1a;subprocess.run()&#xff0c;subprocess.Popen() 1. subprocess.run()方法…

回顾类与对象:掌握String探索其模拟实现的沉浸式体验

目录 一.STL简介二.string的模拟实现1.成员变量与(拷贝)构造、析构函数2.运算符重载[ ]3.添加数据与扩容4.赋值运算符重载及其他重载5.其他函数 一.STL简介 标准模板库 STL是C标准库的重要组成部分&#xff0c;stl分为六大组件&#xff1a;算法、容器、迭代器、空间适配器、仿…

NLP实战7:seq2seq翻译实战-Pytorch复现

&#x1f368; 本文为[&#x1f517;365天深度学习训练营]内部限免文章&#xff08;版权归 *K同学啊* 所有&#xff09; &#x1f356; 作者&#xff1a;[K同学啊] &#x1f4cc; 本周任务&#xff1a; ●请根据N5、N6周内容&#xff0c;为解码器添加上注意力机制 一、前期准备…

常用分类损失CE Loss、Focal Loss及GHMC Loss理解与总结

一、CE Loss 定义 交叉熵损失&#xff08;Cross-Entropy Loss&#xff0c;CE Loss&#xff09;能够衡量同一个随机变量中的两个不同概率分布的差异程度&#xff0c;当两个概率分布越接近时&#xff0c;交叉熵损失越小&#xff0c;表示模型预测结果越准确。 公式 二分类 二…