百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

python基础篇list列表的操作大盘点

toyiye 2024-06-21 12:25 8 浏览 0 评论

Python的基本数据类型有整数,浮点数,布尔,字符串,它们是最基本的数据。在实际编程中,我们要经常组织由很多基本数据组成的集合,这些集合的不同组织方式就是:数据结构,今天讲的是数据结构中的Python list(列表)。数据结构就是一些数据组合得到的“复合”数据类型。

Python内置的数据结构有:

  • 列表(list)
  • 元组(tuple)
  • 字典(dict)
  • 集合(set)

在Python语言中,以上4种数据结构和基础数据类型(整数、浮点数等)统称为“内置类型”(Built-in Types)。

Python list(列表)

Python list(列表),是Python中最常用的一种数据结构,它是一组用方括号括起来、逗号分隔的数据。列表的元素可以是任何类型的,但使用时通常各个元素的类型是相同的。下面的列表有5个元素,元素类型分别是字符串、整数、浮点数和列表:

In [15]: list_a = ['a', 'b', 3, 8.9, [1,2]]
In [16]: list_a
Out[16]: ['a', 'b', 3, 8.9, [1, 2]]

list(列表)的索引(index)

列表就像一个叫号排队的队伍,从头到尾每个元素都有一个递增的号码,这个号码就是对应元素的“索引”(index)。与我们生活中不同的是,列表的第一元素的索引是0。

In [22]: list_a[0]
Out[22]: 'a'
In [23]: list_a[1]
Out[23]: 'b'
In [24]: list_a[3]
Out[24]: 8.9

列表这个队伍也可以从队尾往前叫号,也就是倒序叫号,这时候索引都是负的(负索引),队尾元素的索引s是-1,倒数第二个是-2,依次向前递减。

In [25]: list_a[-1]
Out[25]: [1, 2]
In [26]: list_a[-2]
Out[26]: 8.9

Python列表的索引可以是正索引(从头到尾),也可以是负索引(从尾到头),总结为下面的关系:

列表: ['a', 'b', 'c', 'd', 'e']
 | | | | |
正索引: 0 1 2 3 4
负索引: -5 -4 -3 -2 -1

通过索引我们可以访问到某个元素,那么我们就可以修改这个元素。没错,列表里面的元素是可以被修改的,相当于你先替别人排了个队,他来了就把你替换了。

In [31]: list_b = ['a', 'b', 'c']
In [32]: list_b[1] = 2
In [33]: list_b
Out[33]: ['a', 2, 'c']

list(列表)的切片(slicing)

通过索引,我们可以访问list(列表)的单个元素。但有时候我们要取列表的一个片段,这就是“切片”操作。切片返回的是一个列表,可以理解为“子列表”。

切片是通过索引来实现的,比如: list_a[1:3],这里索引变成两个用冒号:分隔,分别是切片的开始索引和结束索引,[1:3]代表的是一个左开右闭区间,即包含左边索引的元素,到右边索引为止但不包括该元素。那么list_a[1:3]得到的是['b', 3]:

In [27]: list_a[1:3]
Out[27]: ['b', 3]
In [28]: list_a[:3]
Out[28]: ['a', 'b', 3]
In [29]: list_a[1:]
Out[29]: ['b', 3, 8.9, [1, 2]]
In [30]: list_a[:]
Out[30]: ['a', 'b', 3, 8.9, [1, 2]]

上面例子中,切片范围的起止索引可以是缺失的,左边缺失就是从头(0)开始,右边缺失就是后面的全部。

list运算符

列表作为Python的一种“内置类型”,它也像基本类型数字、字符串那样可以进行一些运算符的运算,如下表所示:

从头到尾遍历(迭代)一个list的语法是:for x in list:

for x in [1, 2, 3]:
 print(x)

删除list(列表)

(1)删除整个列表

In [35]: list_a = ['a', 'b', 3, 8.9, [1,2]]
In [36]: del list_a
In [37]: list_a
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-37-1dc2d082cc20> in <module>
----> 1 list_a
NameError: name 'list_a' is not defined

del是Python的一个保留关键字,用于删除(delete)对象。Python里面的所有东西都是对象,所有del可以用于删除变量、列表等等。

(2)删除列表的一个或多个元素

In [41]: list_a = ['a', 'b', 3, 8.9, [1,2]]
In [42]: del list_a[0] # 删除一个元素
In [43]: list_a
Out[43]: ['b', 3, 8.9, [1, 2]]
In [44]: del list_a[1:3] # 删除切片
In [45]: list_a
Out[45]: ['b', [1, 2]]

list(列表)推导式

处理一个序列中的所有或部分元素并返回结果列表的一种紧凑写法。见下面的例子:

In [50]: even = [2 * i for i in range(10)]
In [51]: even
Out[51]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
In [52]: even2 = [i for i in range(20) if i % 2 == 0]
In [53]: even2
Out[53]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

生成even的过程是把0~10之间的数字都乘以2变成偶数;

生成even2的过程是从0~20之间挑选出偶数。

这两个都是列表推导式,并且后面的是加了if条件只处理原列表的部分元素。

list(列表)相关的内置函数

Python内置函数中有一些可以对list进行操作,它们是:

(1)len()

计算列表的长度,即计算列表元素的个数)

In [55]: len([1,2,3])
Out[55]: 3

(2)max()

返回列表元素中的最大值,列表元素必须是同一类型且可比较,比如都是数字型的,或都是字符串,如果类型不统一就会报错:

In [57]: max(['a', 'b', 'c'])
Out[57]: 'c'
In [58]: max([1,2,'a'])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-58-d6e404f692f3> in <module>
----> 1 max([1,2,'a'])
TypeError: '>' not supported between instances of 'str' and 'int'

(3)min()

返回列表元素中的最小值。元素类型要求跟max()一样。

In [59]: min([1,2,3])
Out[59]: 1
In [60]: min(['a', 'b', 'c'])
Out[60]: 'a'
In [61]: min([1,2,'a'])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-61-c2d30ec5fffc> in <module>
----> 1 min([1,2,'a'])
TypeError: '<' not supported between instances of 'str' and 'int'

(4)sum()

计算列表所有元素的和,其元素类型必须是数值型的(整数、浮点数)

In [63]: sum([1,2,3])
Out[63]: 6
In [64]: sum([1.2, 3.2, 4.3])
Out[64]: 8.7
In [65]: sum(['a', 'b', 'c'])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-65-f2e6eb2051e3> in <module>
----> 1 sum(['a', 'b', 'c'])
TypeError: unsupported operand type(s) for +: 'int' and 'str'

(5)sorted()

返回一个排序的列表,但并不改变原列表。

In [66]: sorted([3, 9, 0, 5])
Out[66]: [0, 3, 5, 9]
In [68]: sorted(['python', 'yuanrenxue', 'good'])
Out[68]: ['good', 'python', 'yuanrenxue']

(6)list()

生成一个空列表,或把其它类型数据转换成list。

In [69]: list()
Out[69]: []
In [70]: list('python')
Out[70]: ['p', 'y', 't', 'h', 'o', 'n']

(7)any()

只要列表中有一个元素是True就返回True。

In [72]: any([0, '', '3'])
Out[72]: True

(8)all()

只有列表所有元素为True才返回True。

In [73]: all([0, '', '3'])
Out[73]: False
In [74]: all([3, 'a', True])
Out[74]: True

list(列表)的内置方法

前面我们说的是Python语言的“内置函数”,这里我们讲的是列表本身的“内置方法”。函数和方法有什么区别呢?

  • 函数: 是一系列语句的集合,调用后可以返回一个或一些值。可以给它传递0个或多个参数,这些参数可能被用于函数内部的执行过程。
  • 方法: 就是定义在类内部的函数。很明显,方法是与某个对象关联的。方法的调用方法就是在对象后面加.再加方法名称。

Python中的一切都是对象,列表也不例外,那自然列表也有其自有的方法,总结为下表:

Python list(列表)总结

列表是Python中最常用的数据结构之一,主要用于数据的顺序存储。

练习

  1. 熟悉对列表的各种操作。
  2. 比较列表和字符串的相似之处。

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码