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之列表的基本操作 的相关文章

随机推荐

  • 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 为后续操作的主列表 如需从总体观看全部代码