【Python基础012】列表的用法

        列 表 用 于 存 储 任 意 数目、任意类型的数据集合。在 Python 中,用方括号([])来表示列表,并用逗号来分隔其中的元素。

1、创建列表

        (1)基本语法创建

        a = []

        创建整数列表:

a = [1, 2, 3, 4]

        同一个列表中不仅可以包含相同类型的元素,还可以包含不同类型的值。

        创建包含不同类型的列表:

a = [1, 2, 'abc', True, 3.14]

        (2)list()创建

         a = list()

        使用 list()可以将任何可迭代的数据转化成列表。 

a = list() # 创建一个空的列表对象

b = list("hello,world")

print(a)   # []

print(b)   # ['h', 'e', 'l', 'l', 'o', ',', 'w', 'r', 'l', 'd']

        (3)range()生成列表

        range([start,] end [,step]

        其中:

        start 参数:可选,表示起始数字,默认是 0;

        end 参数:必选,表示结尾数字;

        step参数:可选,表示步长,默认为 1。

        

list(range(1,10))   # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

       (4)列表生成式

        [表达式 for item in 可迭代对象]

 [x for x in range(1,10) if x%2 == 0]   # [2, 4, 6, 8]

2、基本操作

        (1)添加

        ① append():列表的末尾追加一个新对象,每次只能是添加一个元素

a = [1, 2, 3, 4]

a.append(6)   # [1, 2, 3, 4, 6]

        ② +运算符操作:会创建一个新的列表对象,涉及到大量的复制操作,对于操作大量的元素不建议使用

        例:List1+List2

a = [1, 2, 3, 4]

b = [5, 6, 7]

a+b    #  [1, 2, 3, 4, 5, 6, 7]

        ③ extend():将将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象,可添加一个列表或者一个元素

a = [1, 2, 3, 4]

b = [5, 6, 7]

a.extend(b)  # [1, 2, 3, 4, 5, 6, 7]

a.extend('8')  # [1, 2, 3, 4, 5, 6, 7, '8']

        ④ insert():将指定的元素插入到列表对象的任意指定位置。这样会让插入位置后面所有的元素进行移动,会影响处理速度。涉及大量元素时,尽量避免使用。类似发生这种移动的函数还有:remove()、pop()、del(),它们在删除非尾部元素时也会发生操作位置后面元素的移动。

a = [1, 2, 3, 4]

a.insert(2, 10)  # 在列表a的索引2处插入元素10   # [1, 2, 10, 3, 4]

        (2)查找

        ① 通过索引直接访问元素

        序列中的所有元素都是有索引的,编号从0 开始递增,最大到列表的长度减1。序列中的所有元素都可以通过索引访问。其中超出索引范围,会抛出异常。

a = [1, 2, 3, 4]
 
a[0] # 获取列表a中索引为0的元素,即列表中第1个元素  1

a[-1] # 获取列表a中索引为-1的元素,即列表中最后1个元素  4

        ② index()获取指定元素在列表中首次出现的索引

        语法是:

        index(value,[start,[end]])

        其中start,end为指定的搜索范围。

a = [1, 20, 3, 4, 10, 30, 20, 50, 30, 3, 5, 1]
 
a.index(20) # 从列表中搜索第一个20的位置  1

a.index(20, 2) # 从列表索引位置2开始往后搜索第一个20的位置  6

a.index(20, 4, 7) # 从列表索引位置4到7这个范围,搜索第一个20的位置   6

        (3)修改

        修改列表中的某一个元素,可以像使用数组一样对列表中的特定元素赋值,也就是使用一对中括号指定元素在列表中的索引,然后使用赋值运算符(=)进行赋值。

a = [1, 20, 3, 4, 10, 30, 20, 50, 30, 3, 5, 1]

a[0] = ‘dhasaiidas’ # 修改列表a中第一个元素为dhasaiidas   ['dhasaiidas', 20, 3, 4, 10, 30, 20, 50, 30, 3, 5, 1]

        (4)删除

        ① del 删除

        del 删除列表指定位置的元素。

        语法格式:del 元素。

a = [1, 20, 3, 4, 10, 30, 20, 50, 30, 3, 5, 1]

del a[2]   # [1, 20, 4, 10, 30, 20, 50, 30, 3, 5, 1]

        ② pop 删除

        pop()删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素。

a = [1, 20, 3, 4, 10, 30, 20, 50, 30, 3, 5, 1]

b=a.pop() # 删除最后一个元素  1

c=a.pop(2) # 删除下标为2的元素  3

        ③ remove 删除

        删除首次出现的指定元素,若不存在该元素抛出异常。

a = [1, 20, 3, 4, 10, 30, 20, 50, 30, 3, 5, 1]

a.remove(20) # 删除列表a中第一次出现的元素20  [1, 3, 4, 10, 30, 20, 50, 30, 3, 5, 1]

        (5)乘法

        列表乘以一个数字n 会生成新的列表,在新的列表中原来的列表将会被重复n 次。

a = [1, 2, 3, 4]

b=a*3 # 返回的值是 将列表a复制了3次   [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

        乘法的作用为复制的用法还可以使用在字符串上。

        (6)列表的长度、最大值和最小值

        len、max和min这三个函数用于返回列表中元素的数量、列表中最大值、列表中的最小值。如果列表中同时包含整数和字符串类型的元素,那么使用max、min 函数就会抛出异常。

3、切片操作

        切片操作是从列表A 中获取一个子列表B。从A 中获取B,需要指定B 在A 中的开始索引和结束索引,因此,切片操作需要指定两个索引。对于列表的切片操作和字符串类似。切片是Python 序列及其重要的操作,适用于列表、元组、字符串等等。切片的语法格式如下:

        列表[起始偏移量start : 终止偏移量end [:步长step]]

        当start, end, step三个值为正数时

a = [1, 20, 3, 4, 10, 30, 20, 50, 30, 3, 5, 1]

print(a[:]) # 默认从列表的开始到列表结束 ,步长为 1  [1, 20, 3, 4, 10, 30, 20, 50, 30, 3, 5, 1]

print(a[1:]) # 从列表的索引 1 开始到结束,步长为 1   [20, 3, 4, 10, 30, 20, 50, 30, 3, 5, 1]

print(a[:2]) # 从开始到索引 1,步长为 1   [1, 20]

print(a[1:3]) # 从列表索引 1 开始到索引 2,步长为 1  [20, 3]

print(a[1:6:2]) # 从列表索引 1 开始到索引 5,步长为 2   [20, 4, 30]

        当start, end, step三个值为负数时

a = [1, 20, 3, 4, 10, 30, 20, 50, 30, 3, 5, 1]

print(a[-2:]) # 从列表的倒数第 2 个开始到列表结束  [5, 1]

print(a[-5:-3]) # 从倒数第 5 个开始到倒数第 4 个  [50, 30]

print(a[::-1]) # 从右到左反向提取  [1, 5, 3, 30, 50, 20, 30, 10, 4, 3, 20, 1]

4、常用方法

5、列表遍历

        列表创建后,可以使用循环进行遍历获取列表中的每个元素。

#for 循环遍历列表
a = [1, 20, 3, 4, 10, 30, 20, 50, 30, 3, 5, 1]

for value in a:
    print(value)   
#while 循环遍历列表
my_list = [1, 20, 3, 4, 10, 30, 20, 50, 30, 3, 5, 1]
# 定义变量
index = 0
# 定义变量记录列表元素个数
l = len(my_list)
while index < l:
    # 通过下标索引获取元素
    value = my_list[index]
    print(value)
    index+=1

6、 enumerate()函数

        enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for 循环当中。enumerate() 方法的语法格式如下所示:

        enumerate (sequence,[start=0])

        其中sequence 表示一个序列、迭代器或其他支持迭代对象;start 表示下标起始位置。

seq = ['one', 'two','three']

for i, element in enumerate(seq):

    print(i,element)

# 0 one
# 1 two
# 2 three

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker 47 个常见故障的原因和解决方法

本文针对Docker容器部署、维护过程中&#xff0c;产生的问题和故障&#xff0c;做出有针对性的说明和解决方案&#xff0c;希望可以帮助到大家去快速定位和解决类似问题故障。 Docker是一种相对使用较简单的容器&#xff0c;我们可以通过以下几种方式获取信息&#xff1a; 1、…

[labelme]labelme如何将标注的json格式转成png的mask文件掩码文件

labelme工具不仅仅具有标注功能&#xff0c;而且可以将json文件转化为png的分割训练文件&#xff0c;如果您是一个类别则可以直接用labelme_json_to_dataset进行转换最后提取对应的掩码文件即可进行语义分割训练。如果您是>2个类别则不推荐使用labelme工具进行转换&#xff…

安卓动态广播

在AndroidManifest.xml文件的<manifest>标签内添加以下权限声明&#xff1a; <uses-permission android:name"android.permission.ACCESS_NETWORK_STATE"/> 这行代码声明了应用程序需要访问网络状态的权限。添加此权限后&#xff0c;应用程序将能够获取…

conda环境下wget: command not found解决方案

1 问题描述 window10的conda环境下&#xff0c;运行程序&#xff0c;报如下错误 sh download_model.sh mkdir: cannot create directory ‘data’: File exists download_model.sh: line 4: wget: command not found download_model.sh: line 5: wget: command not found mkd…

UE5 C++ 基础变量类型,关于框架的初级练习

一.创建自己的MyGameModed。并在其中设置好GamePlay框架。 1.创建MyGameState,MyGameState,MyHUD,MyPawn&#xff0c;MyPawn&#xff0c;MyPlayerController,MyPlayerState。 2.并在MyGameMode的头文件里面&#xff0c;把GmaeMode里的框架需要的框架类都包含进去。 3.写一个构…

MySql三方工具

Yearning 1.1.1 Yearning简介 Yearning 开源的MySQL SQL语句审核平台&#xff0c;提供数据库字典查询&#xff0c;查询审计&#xff0c;SQL审核等多种功能。 Yearning 1.x 版本需Inception提供SQL审核及回滚功能。 Inception是集审核&#xff0c;执行&#xff0c;回滚于一体的…

报错Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required

控制台提示代码: org.springframework.beans.factory.BeanCreationException: Error creating bean with name shiroFilterFactoryBean defined in class path resource [com/gyc/drug/config/ShiroFilterConfiguration.class]: Bean instantiation via factory method failed…

git设置代理

git设置代理 git config --global http.proxy 127.0.0.1:7890git查询代理 git config --global http.proxy git取消代理 git config --global --unset http.proxy

【Docker】安装nacos以及实现负载均衡

&#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Docker的相关操作吧 目录 &#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 前言 一.nacos单个部署 1.镜像拉取 …

分销商城新零售商城门店商城小程序开发

用户注册&#xff1a;让用户用手机号或三方登录的方式轻松开启账号之旅。 商品探索&#xff1a;用户可以自由浏览琳琅满目的商品&#xff0c;还能通过关键词迅速锁定心仪之物。 商品分类与筛选&#xff1a;商品按类陈列&#xff0c;用户可根据价格、品牌等条件筛选&#xff…

电力能源实景三维可视化合集,智慧电网数字孪生

电力能源是现代社会发展和运行的基石&#xff0c;渗透于工业、商业、农业、家庭生活等方方面面&#xff0c;它为经济、生活质量、环境保护和社会发展提供了巨大的机会和潜力。图扑软件应用自研 HT for Web 强大的渲染引擎&#xff0c;助力现代化的电力能源数字孪生场景&#xf…

【计算机网络】子网划分(经典基础练习题)

一、某主机IP地址为110.35.2.68&#xff0c;子网掩码为255.255.255.128&#xff0c;求网络地址&#xff1f; 二、有A类网络18.0.0.0的子网掩码为255.128.0.0&#xff0c;请问可以划分为多少个子网&#xff1f; 并写出每个子网的子网号&#xff1f; 三、将C类网119.181.25.0划分…

画面滤镜特效SDK,企业级视频处理技术方案

视频处理技术日新月异&#xff0c;对于企业而言&#xff0c;如何快速、高效地处理视频内容&#xff0c;增加其观赏性和吸引力&#xff0c;成为了一项重要的挑战。美摄科技画面滤镜特效SDK&#xff0c;作为一款全面的视频处理工具&#xff0c;为企业提供了一种高效、灵活的视频处…

Sentinel 轨道数据及下载

Sentinel卫星轨道文件在处理Sentinel卫星数据时发挥着关键作用。这些轨道文件包含了有关卫星在轨道上的运动、位置、姿态等信息&#xff0c;对于地理校正、成像几何校正以及多时相分析等方面具有重要作用。以下是Sentinel卫星轨道文件的主要作用&#xff1a; 地理校正&#xff…

【全】OpenSSL创建生成CA证书、服务器、客户端证书及密钥说明

本文章对应的文档:使用OpenSSL创建生成CA证书服务器客户端证书及密钥资源-CSDN文库 https://download.csdn.net/download/weixin_41885845/88746920 对于SSL单向认证 服务器需要CA证书、server证书、server私钥,客户端需要CA证。 对于SSL双向认证 服务器需要CA证书、serv…

uni-app小程序 uni.showToast字数超过两行自动省略显示不全问题

在实际开发过程中如果用户提交某些文件时&#xff0c;如果缺少某些条件我们要提醒用户缺少那些条件才能提交&#xff0c;但是如果我们用uni.showToast提醒的次数超过7个字的时候就会导致文字显示不全&#xff0c;达不到提醒的效果&#xff0c;这种时候我们就需要使用uni.showMo…

HarmonyOS—开发环境诊断的功能

为了大家开发应用/服务的良好体验&#xff0c;DevEco Studio提供了开发环境诊断的功能&#xff0c;帮助大家识别开发环境是否完备。可以在欢迎界面单击Help > Diagnose Development Environment进行诊断。如果已经打开了工程开发界面&#xff0c;也可以在菜单栏单击Help >…

Flink的KeyedProcessFunction基于Event Time和Process Time的定时器用法实例分析

FLink处理函数简介 在Flink底层&#xff0c;我们可以不定义任何具体的算子&#xff08;比如 map&#xff0c;filter&#xff0c;或者 window&#xff09;&#xff0c;而只是提炼出一个统一的【处理】&#xff08;process&#xff09;操作——它是所有转换算子的一个概括性的表…

v3的响应式,ref,reactive和生命周期(简写)

vue3笔记 1.两种安装方式 (1)直接创建项目vue3 (2)使用vite 组件传值 1.组件传值的用法 从父组件向子组件传值&#xff1a; <Son :prop1"nmb"></Son> 2.defineprops函数 defineProps函数在setup标签内不需要引入&#xff0c;可直接使用 defineP…

easyui渲染隐藏域<input type=“hidden“ />为textbox可作为分割条使用

最近在修改前端代码的时候&#xff0c;偶然发现使用javascript代码渲染的方式将<input type"hidden" />渲染为textbox时&#xff0c;会显示一个神奇的效果&#xff0c;这个textbox输入框并不会隐藏&#xff0c;而是显示未一个细条&#xff0c;博主发现非常适合…