Python之列表的基本操作

2023-05-16

目录

1、列表的创建与遍历

2、添加元素

3、删除元素

 4、分片赋值

 5、列表排序

 完整代码:


本文的代码体为一个完整体,即最开始的列表的创建与遍历中创建的列表,为后续操作的主列表。如需从总体观看全部代码,请移步到文章最后面。

1、列表的创建与遍历

        与整数和字符串不同,列表要处理一组数据。因此,列表必须通过显式的数据赋值才能生成,简单将一个列表赋值给另一个列表不会生成新的列表对象,只会对原有列表生成一个新的引用。

#创建列表
list =[1,2,3,4,5]
list2=list
print(list==list2)# True 就算新建一个列表,然后将原有的值赋值给新的列表。新的列表和原列表还是指向的同一个地址
list[0]=0
print(list,list2) #修改list列表的同时也修改了list2,因为list和list2都是指向的同一个地址
print("====================================")
length=len(list)#获取列表长度

#遍历
i=0
#为了方便后续操作的观察,这里采用不换行输出
while(i<length):
    if (i < length-1):
        print(list[i], end=',')
    else:
        print(list[i],end='')
        print()
    i+=1
print("====================================")
for x in list:
    if (x <length):
        print(x, end=',')
    else:
        print(x,end='')
        print()
   # print(x)
print("====================================")

2、添加元素

        列表可以使用append()、extend()或insert()方法来添加元素

2.1、append()方法:在列表末尾添加新的元素

语法格式:list.append(obj)

其中,list表示列表,obj表示添加到列表末尾的对象

#在列表末尾添加元素
list.append(6)
print(list) ##[0, 2, 3, 4, 5, 6]

 2.2、extend()方法:

        在列表末尾一次性添加另一个序列中的多个值(用新列表扩展原来的列表)

extend和append不同的是:如果数据是一个序列,则将这个序列的数据逐一添加到列表,即将数据拆开再添加。

语法格式:list.extend(seq)

其中,list表示列表,seq表示添加到列表末尾的序列

#在列表末尾一次性添加另一个序列中的多个值
list3=[7,8]
list.extend(list3)
print(list) #[0, 2, 3, 4, 5, 6, 7, 8]

l=[1,2]
test='abc'
l.extend(test)
print(l) #[1,2,a,b,c]

2.3、insert()方法:

        将指定对象插入到列表的指定位置

语法格式:list.insert(index,obj)

其中,list表示列表,index表示插入的索引位置,obj表示插入列表中的对象 

#将元素添加到指定位置,例:在索引位置为1的地方插入1
list.insert(1,1)
print(list) #[0, 1, 2, 3, 4, 5, 6, 7, 8]

3、删除元素

        在列表中,删除元素的常用方法有:del命令、pop()方法和remove()方法

3.1、del命令:根据索引删除列表中的元素

#根据索引删除元素,例:删除索引位置为0的元素
del list[0]
print(list) #[1, 2, 3, 4, 5, 6, 7, 8]

#使用分片的方式输出列表中的元素
del list[5:7] #包前不包后,5:7即删除索引为5、6的元素
print(list) #[1, 2, 3, 4, 5, 8]

 3.2、pop()方法:

        根据索引删除列表中的元素,并返回该元素的值

语法格式:list.pop([index])

其中,list表示列表。index表示删除列表元素的索引值,为可选参数,缺省时为-1,删除列表中的最后一个元素。

#根据索引删除列表中的元素,并返回该元素的值
print(list.pop(5)) #8
print(list) #[1, 2, 3, 4, 5]
#如果没给索引,则默认删除列表最后一个元素。即弹栈/出栈
# print(list.pop())
# print(list)

 3.3、remove()方法:

        remove()方法只能删除列表中某个值的第一个匹配项,如果要删除所有匹配的元素就需要搭配循环语句实现。

语法格式:list.remove(obj)

#删除某个值的第一个匹配值
list.remove(3)
print(list) #[1, 2, 4, 5]

 4、分片赋值

        分片赋值就是以分片的形式给列表赋值,可以一次为多个元素赋值

#替换索引从1包括1开始到最后的元素
list[1:]=[3,6,9]
print(list) #[1, 3, 6, 9]

 分片赋值还可以在不替换任何原有元素的情况下插入新的元素

#在索引为2的位置插入列表[4,5]
#[2:1]如果后面的1变成2或者更大的数,则会依次覆盖/删除插入位置后面的数
list[2:1]=[4,5]
print(list) #[1, 3, 4, 5, 6, 9]

 分片赋值也可以删除元素

#删除元素
num=[1,2,3,4,5,6]
print(num) #[1, 2, 3, 4, 5, 6]
num[1:5]=[] #用空列表替换列表中索引1到索引5(不含)的元素
print(num) #[1, 6]

 5、列表排序

        将列表中的元素排序的方法有3种,分别是reverse()方法、sort()方法和sorted()函数

5.1、reverse()方法:

        将列表中的元素反向存放

语法格式:list.reverse()

#将列表元素反转
list.reverse()
print(list) #[9, 6, 5, 4, 3, 1]

 5.2、sort()方法:

        将列表中的元素进行排序(默认为升序)

语法格式:list.sort([key=None])[,reverse=False])

其中,list表示列表,key为可选参数,如果指定了该参数,会使用该参数的方法进行排序。reverse为可选参数,表示是否降序排序,缺省时为False

#将列表排序(默认为升序)
list.sort()
print(list) #[1, 3, 4, 5, 6, 9]
#改为降序排序
list.sort(reverse=True)
print(list) #[9, 6, 5, 4, 3, 1]

#按元素长度进行排序(默认升序)
list4=["hello","P","yt","hon"]
list4.sort(key=len)
print(list4) #['P', 'yt', 'hon', 'hello']
#降序
list4.sort(key=len,reverse=True)
print(list4) #['hello', 'hon', 'yt', 'P']

 5.3、sorted()函数:

        与sort()方法不同,内置函数sorted()返回新列表,并不对原列表进行任何修改

语法格式:sorted(iterable[,key=None][,reverse=False])

其中,iterable表示可迭代对象,如列表。参数key和reverse的用法与sort()方法中的相同

#内置函数sorted()返回新列表,不对原列表进行修改
list5=[5,3,4,2,1]
list5_new=sorted(list5)
print(list5==list5_new) # False 列表地址不一致
print(list5) #原列表不变 [5, 3, 4, 2, 1]
print(list5_new) #新列表按升序排列 [1, 2, 3, 4, 5]
#降序
list6=sorted(list5,reverse=True)
print(list6==list5) #False
print(list6) #[5, 4, 3, 2, 1]

 完整代码:

list =[1,2,3,4,5]
list2=list
print(list==list2)# True 就算新建一个列表,然后将原有的值赋值给新的列表。新的列表和原列表还是指向的同一个地址
list[0]=0
print(list,list2) #修改list列表的同时也修改了list2,因为list和list2都是指向的同一个地址
print("====================================")
length=len(list)#获取列表长度

#遍历
i=0
#为了方便后续操作的观察,这里采用不换行输出
while(i<length):
    if (i < length-1):
        print(list[i], end=',')
    else:
        print(list[i],end='')
        print()
    i+=1
print("====================================")
for x in list:
    if (x <length):
        print(x, end=',')
    else:
        print(x,end='')
        print()
   # print(x)
print("====================================")

# 添加元素
print("添加元素:")
#在列表末尾添加元素
list.append(6)
print(list) ##[0, 2, 3, 4, 5, 6]

#在列表末尾一次性添加另一个序列中的多个值
list3=[7,8]
list.extend(list3)
print(list) #[0, 2, 3, 4, 5, 6, 7, 8]

#将元素添加到指定位置,例:在索引位置为1的地方插入1
list.insert(1,1)
print(list) #[0, 1, 2, 3, 4, 5, 6, 7, 8]
print("====================================")

#删除元素
print("删除元素:")
#根据索引删除元素,例:删除索引位置为0的元素
del list[0]
print(list) #[1, 2, 3, 4, 5, 6, 7, 8]

#使用分片的方式输出列表中的元素
del list[5:7] #包前不包后,5:7即删除索引为5、6的元素
print(list) #[1, 2, 3, 4, 5, 8]

#根据索引删除列表中的元素,并返回该元素的值
print(list.pop(5)) #8
print(list) #[1, 2, 3, 4, 5]
#如果没给索引,则默认删除列表最后一个元素。即弹栈/出栈
# print(list.pop())
# print(list)

#删除某个值的第一个匹配值
list.remove(3)
print(list) #[1, 2, 4, 5]
print("====================================")

#分片赋值
print("分片赋值:")
#替换索引从1包括1开始到最后的元素
list[1:]=[3,6,9]
print(list) #[1, 3, 6, 9]

#在索引为2的位置插入列表[4,5]
#[2:1]如果后面的1变成2或者更大的数,则会依次覆盖/删除插入位置后面的数
list[2:1]=[4,5]
print(list) #[1, 3, 4, 5, 6, 9]

#删除元素
num=[1,2,3,4,5,6]
print(num) #[1, 2, 3, 4, 5, 6]
num[1:5]=[] #用空列表替换列表中索引1到索引5(不含)的元素
print(num) #[1, 6]
print("====================================")

#列表排序
print("排序:")
#将列表元素反转
list.reverse()
print(list) #[9, 6, 5, 4, 3, 1]

#将列表排序(默认为升序)
list.sort()
print(list) #[1, 3, 4, 5, 6, 9]
#改为降序排序
list.sort(reverse=True)
print(list) #[9, 6, 5, 4, 3, 1]

#按元素长度进行排序(默认升序)
list4=["hello","P","yt","hon"]
list4.sort(key=len)
print(list4) #['P', 'yt', 'hon', 'hello']
#降序
list4.sort(key=len,reverse=True)
print(list4) #['hello', 'hon', 'yt', 'P']
print("---------------------------------------")

#内置函数sorted()返回新列表,不对原列表进行修改
list5=[5,3,4,2,1]
list5_new=sorted(list5)
print(list5==list5_new) # False 列表地址不一致
print(list5) #原列表不变 [5, 3, 4, 2, 1]
print(list5_new) #新列表按升序排列 [1, 2, 3, 4, 5]
#降序
list6=sorted(list5,reverse=True)
print(list6==list5) #False
print(list6) #[5, 4, 3, 2, 1]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python之列表的基本操作 的相关文章

  • 如果两点之间的距离低于某个阈值,则从列表中删除点

    我有一个点列表 只有当它们之间的距离大于某个阈值时 我才想保留列表中的点 因此 从第一个点开始 如果第一个点和第二个点之间的距离小于阈值 那么我将删除第二个点 然后计算第一个点和第三个点之间的距离 如果该距离小于阈值 则比较第一点和第四点
  • Lighttpd 和 cgi python

    我正在尝试通过 lighttpd 执行一些 python 脚本 但是当我尝试运行它时 我只得到一个要求我下载的空白文件 lighttpd conf server modules mod access mod alias mod access
  • 将html数据解析成python列表进行操作

    我正在尝试读取 html 网站并提取其数据 例如 我想查看公司过去 5 年的 EPS 每股收益 基本上 我可以读入它 并且可以使用 BeautifulSoup 或 html2text 创建一个巨大的文本块 然后我想搜索该文件 我一直在使用
  • Python 中的舍入浮点问题

    我遇到了 np round np around 的问题 它没有正确舍入 我无法包含代码 因为当我手动设置值 而不是使用我的数据 时 返回有效 但这是输出 In 177 a Out 177 0 0099999998 In 178 np rou
  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • Pandas Merge (pd.merge) 如何设置索引和连接

    我有两个 pandas 数据框 dfLeft 和 dfRight 以日期作为索引 dfLeft cusip factorL date 2012 01 03 XXXX 4 5 2012 01 03 YYYY 6 2 2012 01 04 XX
  • 如何使用python在一个文件中写入多行

    如果我知道要写多少行 我就知道如何将多行写入一个文件 但是 当我想写多行时 问题就出现了 但是 我不知道它们会是多少 我正在开发一个应用程序 它从网站上抓取并将结果的链接存储在文本文件中 但是 我们不知道它会回复多少行 我的代码现在如下 r
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • 如何通过索引列表从 dask 数据框中选择数据?

    我想根据索引列表从 dask 数据框中选择行 我怎样才能做到这一点 Example 假设我有以下 dask 数据框 dict A 1 2 3 4 5 6 7 B 2 3 4 5 6 7 8 index x1 a2 x3 c4 x5 y6 x
  • pyspark 将 twitter json 流式传输到 DF

    我正在从事集成工作spark streaming with twitter using pythonAPI 我看到的大多数示例或代码片段和博客是他们从Twitter JSON文件进行最终处理 但根据我的用例 我需要所有字段twitter J
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • pip 列出活动 virtualenv 中的全局包

    将 pip 从 1 4 x 升级到 1 5 后pip freeze输出我的全局安装 系统 软件包的列表 而不是我的 virtualenv 中安装的软件包的列表 我尝试再次降级到 1 4 但这并不能解决我的问题 这有点类似于这个问题 http
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • Pandas 将多行列数据帧转换为单行多列数据帧

    我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
  • 根据列 value_counts 过滤数据框(pandas)

    我是第一次尝试熊猫 我有一个包含两列的数据框 user id and string 每个 user id 可能有多个字符串 因此会多次出现在数据帧中 我想从中导出另一个数据框 一个只有那些user ids列出至少有 2 个或更多string
  • Python:XML 内所有标签名称中的字符串替换(将连字符替换为下划线)

    我有一个格式不太好的 XML 标签名称内有连字符 我想用下划线替换它 以便能够与 lxml objectify 一起使用 我想替换所有标签名称 包括嵌套的子标签 示例 XML
  • Python ImportError:无法导入名称 __init__.py

    我收到此错误 ImportError cannot import name life table from cdc life tables C Users tony OneDrive Documents Retirement retirem
  • 使用for循环时如何获取前一个元素? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 循环内的上一个和下一个值 https stackoverflow com questions 1011938 python previous and next values inside
  • 模拟pytest中的异常终止

    我的多线程应用程序遇到了一个错误 主线程的任何异常终止 例如 未捕获的异常或某些信号 都会导致其他线程之一死锁 并阻止进程干净退出 我解决了这个问题 但我想添加一个测试来防止回归 但是 我不知道如何在 pytest 中模拟异常终止 如果我只

随机推荐

  • bdd100k数据标签格式转到VOC2007格式

    需要修改的部分 xff1a 1 BDD FOLDER xff1a 修改成自己的bdd数据集root路径 2 如果训练的为 traffic light 类 xff0c 且类别为 red green yellow none xff0c 这些属性
  • 用KEIL5打开KEIL4的文件

    有时候我们会遇到 xff0c 下载了KEIL5时需要打开KEIL4文件的时候 这时候 xff0c 我们需要将两个兼容一下 我遇到了挺多的问题 xff0c 下面自己总结一下 xff1a 我是按照开发板的指导书的步骤来进行的 上面写的 xff0
  • 恒流源电路

    一 恒流源概述 恒流源是指在功率范围内 xff0c 对外输出的电流基本是恒定的 二 恒流源特点 不因负载 输出电压 变化而改变 xff1b 不因环境温度变化而改变 xff1b 内阻为无限大 以使其电流可以全部流出到外面 xff1b 能够提供
  • 关于ST-Link V2 报错internal commend error的处理办法

    1 检查相关配置是否正确 确定接线没有问题 xff1a Vcc 接 Vcc GND 接 GND SWCLK 接 SWCLK SWDIO 接 SWDIO 首先 xff0c 确保电脑的CH驱动已经安装成功且正常运行 判断方法 xff1a 点击设
  • docker容器技术基础入门及LXC的配置

    docker容器技术基础入门及LXC的配置 1 docker简介1 2 容器与虚拟化的区别 xff1a 1 3 docker的三个基本概念1 3 1镜像1 3 2 分层储存1 3 3 容器1 3 4 仓库 2 docker产生的背景2 1
  • 简单易懂的51单片机LCD1602显示protues仿真程序

    时序图 仿真效果 include 34 AT89X51 h 34 typedef unsigned char u8 typedef unsigned int u16 define lcd1602 DB P3 sbit RS 61 P2 5
  • html5的思维导图--超详细

    下面是最近我学习总结的学习思维导图
  • 2023年天梯赛(l1 - l2全部题解)(第十二届)

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • c语言strtok函数完美实现

    看到网上好多错误的strtok实现 xff0c 也不能说错 xff0c 准确的说是没有完全的实现strtok xff0c 现自己写了下 xff0c 目前还没有找到bug xff0c 如果有不对的欢迎指出 大多数网上的strtok实现的代码跑
  • 使用vscode操作本地git

    学习目标 xff1a 使用vscode操作本地git 基础的git的命令 使用本地git进行版本穿梭 修改本地git的用户名和邮箱 git有三个状态 xff1a 工作区 暂存区 版本库 使用vscode操作本地git xff1a 1 首先
  • Linux环境下安装Docker

    1 安装Docker 1 1在linux系统中下载前置环境 1 安装wget命令 wget命令是Linux系统用于从Web下载文件的命令行工具 2 安装依赖环境 3 设置Docker镜像源 xff0c 因为默认的服务器很慢所以我选择国内镜像
  • VOC2007数据标签格式转COCO2017格式

    以下代码是将voc2007的数据标签格式转为coco2017数据标签格式 可直接基于voc2007的 xml所有文件进行处理 也可先转化为 txt文件路径之后再处理 此处我是直接基于 xml所有文件进行处理的 span class toke
  • SQLyog连接MYSQL时报错 Client does not support authentication protocol requested by server; consider upgra

    之前安装MYSQL8 0的时候安装的是绿色版 xff0c 在cmd中配置完所有参数之后 xff0c 在连接SQLyog的时候却报出了以下错误 翻译一下大致的意思为 xff1a 客户端不支持服务器请求的身份验证协议 xff1b 考虑升级MYS
  • 图神经网络对抗攻击的研究学习(一)

    目录 0 引入1 初窥1 1 图神经网络1 1 1 传统神经网络的不足1 1 2 图神经网络概况1 1 3 Graph Convolution Networks GCN 1 1 4 Graph Attention Networks GAT
  • 二叉树遍历方法——前、中、后序遍历(图解)

    目录 一 前序遍历 xff08 1 xff09 递归版本 xff08 2 xff09 非递归版本 二 中序遍历 xff08 1 xff09 递归版本 xff08 2 xff09 非递归版本 三 后序遍历 xff08 1 xff09 递归版本
  • VMware虚拟机安装Linux

    前言 接下来要分享一些Linux相关的内容 咱们来聊聊为啥要学Linux 首先 xff0c 运维靠这个吃饭 xff0c 测试要部署测试环境 大部分企业要用到Linux操作系统 xff0c 作为开发多少也要会是吧 所以 xff0c 他来了 一
  • MPU6050基本原理介绍及程序配置

    一 MPU6050简介 1 内部主要结构 xff1a 陀螺仪 加速度计 数字运动处理器DMP xff08 Digital Motion Processor xff09 PS MPU6050还含有第二IIC接口 xff0c 用于连接一个 第三
  • 2023年河北省天梯赛C语言 猜帽子游戏

    include lt stdio h gt int N K x int a 100 void solve int dui 61 0 int cuo 61 0 int mzuo 61 0 for int i 61 0 i lt N i 43
  • 树莓派4B环境配置

    前言 最近要用到树莓派 xff0c 荔枝整理了一份基础的树莓派4B配置总结 xff0c 有需要的大家自取 文章目录 前言 一 基础配置 1 1 烧录 1 2 进入桌面 1 3 开启SSH和VNC 二 更换国内源 三 查看python3版本并
  • Python之列表的基本操作

    目录 1 列表的创建与遍历 2 添加元素 3 删除元素 4 分片赋值 5 列表排序 完整代码 xff1a 本文的代码体为一个完整体 xff0c 即最开始的列表的创建与遍历中创建的列表 xff0c 为后续操作的主列表 如需从总体观看全部代码