Python数据容器之Python列表的用法

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 这里的数据结构主要描述容器数据类型:列表, 字典, 集合三种容器数据类型, 它们都属于可变数据类型,

这是机器未来的第7篇文章



1. 数据结构概述

这里的数据结构主要描述容器数据类型:列表, 字典, 集合三种容器数据类型, 它们都属于可变数据类型, 前面提到的数值类型和字符串类型、元组, 它们都属于不可变数据类型,不可以修改。

列表是Python容器数据类型,它是整个人工智能体系的容器数据结构底层核心,在它的基础上,扩展出了Numpy——机器学习数据容器,扩展出了Tensor——深度学习数据容器,所以要想学会人工智能,必须理解列表的使用。


2. 列表

列表是容器数据类型,可存储多个元素,且支持不同类型数据,可修改,有序列表,可重复。

举例:

x = [1, 'abc', True, {"name":"Joe"}, 1, 2, ['7', '89']]

x

例子中展现了以下情况:

  • 不同的数据类型共存一个列表的情况:有数值类型、字符串、有列表、字典
  • 列表包含其他容器类型:字典{"name":"Joe"}和列表['7', '89']
  • 列表展现了重复的数据,列表中存在2个1

2.1 定义列表

定义列表有2种方法:list()函数和[]列表运算符。

2.1.1 list()函数

首先看一下list()函数的描述:

list?

从输出的描述信息中可知,list仅支持1个参数:

  • 可为空,为空时则创建一个空列表

x1 = list()

print(x1, type(x1))

  • 不为空时,参数必须是可迭代类型
  • 什么是可迭代对象呢?举个简单的例子,能够在for循环中遍历使用的都是可迭代类型,具体的可迭类型有字符串、列表、元组、字典。

x0 = list()                         # 无参数,空列表

print(x0, type(x0))

x1 = list("name")                   # 用字符串初始化列表

print(x1, type(x1))

x2 = list([1, 2, 'a', 'b', 'c'])    # 用列表初始化列表      

print(x2, type(x2))

x3 = list((1, 2, 3, 4))             # 用元组初始化列表

print(x3, type(x3))

d1 = {"name":"zsm", "age":18, "sex":"male"}

x4 = list(d1.keys())                  # 用字典初始化列表:对于key和value需要分别处理

x5 = list(d1.values())

print(x4, type(x4), x5, type(x5))

2.1.2 []列表运算符

x1 = []                 # 空列表

print(x1, type(x1))

x2 = [1, 2, 3, 4]       # 有元素的列表

print(x2, type(x2))

2.2 列表常用方法

x = [1, 2, 3, 4, 5]

dir(x)

['add',</br> 'class',</br> 'contains',</br> 'delattr',</br> 'delitem',</br> 'dir',</br> 'doc',</br> 'eq',</br> 'format',</br> 'ge',</br> 'getattribute',</br> 'getitem',</br> 'gt',</br> 'hash',</br> 'iadd',</br> 'imul',</br> 'init',</br> 'init_subclass',</br> 'iter',</br> 'le',</br> 'len',</br> 'lt',</br> 'mul',</br> 'ne',</br> 'new',</br> 'reduce',</br> 'reduce_ex',</br> 'repr',</br> 'reversed',</br> 'rmul',</br> 'setattr',</br> 'setitem',</br> 'sizeof',</br> 'str',</br> 'subclasshook',</br> 'append',</br> 'clear',</br> 'copy',</br> 'count',</br> 'extend',</br> 'index',</br> 'insert',</br> 'pop',</br> 'remove',</br> 'reverse',</br> 'sort']

使用dir函数列出列表可支持的方法和属性,从输出可知方法有'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'。

2.2.1 添加

  • li.append(x):向列表尾部添加一个元素

x = [1, 2, 3, 4, 'abc', True]

x.append(7)         # 在末尾插入一个对象        

x

[1, 2, 3, 4, 'abc', True, 7]

  • li.insert(index,object):向列表的指定位置插入一个元素

x.insert(2, 'boy')  # 在索引为2的位置插入对象boy

x

[1, 2, 'boy', 3, 4, 'abc', True, 7]

  • li.extend(li2):合并,将参数列表中的元素合并到原列表中

x2 = ['banana', 'apple']

x.extend(x2)        # 注意:是将列表x2中的元素合并到x中,不是将x2整体合并到x中

x

[1, 2, 'boy', 3, 4, 'abc', True, 7, 'banana', 'apple']

2.2.2 删除

  • li.pop(index):删除指定位置的一个元素

y = x.pop(4)        # 取出列表中的元素4,取出后元素不再存于x中        

print(x, y)

[1, 2, 'boy', 3, 'abc', True, 7, 'banana', 'apple'] 4

  • li.remove(object):删除指定内容的一个元素,object是要删除的元素,只能删除第一个

x.append(2)         # 插入一个新的对象2到列表中

print(x)

x.remove(2)         # 删除一个值为2的对象,且仅删除第一个

print(x)

[1, 2, 'boy', 3, 'abc', True, 7, 'banana', 'apple', 2][1, 'boy', 3, 'abc', True, 7, 'banana', 'apple', 2]

  • li.clear():清空列表中的所有元素

x.clear()           # 清除对象

x

[]

2.2.3 序列

  • li.reverse():将列表反序,等同于[::-1]

x = [1, 2, 3, 4, 'abc', True]

print(x)

x.reverse()         # 逆序

print(x)

[1, 2, 3, 4, 'abc', True][True, 'abc', 4, 3, 2, 1]

  • li.sort():对列表排序,可按照升序或降序排列

x = [1, 2, 3, 7, 8,3, 2,2]

x.sort()

print(x)

[1, 2, 2, 2, 3, 3, 7, 8]

2.2.4 其它

  • li.count(object):对列表中的某个元素进行计数

x = [1, 2, 3, 7, 8,3, 2,2]

x.count(2)

3

  • li.index(object):获得列表中元素的索引,返回第一个匹配的索引

x = [1, 2, 3, 7, 8,3, 2,2]

x.index(2)

1

2.2.5 修改

列表可以通过索引修改对应的值。

2.3 列表推导式

列表推导式是一个根据条件从原列表快速生成新列表的简写方法,其语法为

[输出值 for 遍历的元素 in 列表变量 if 条件语句]

举例:快速删除列表中的数字3

x = [1, 2, 3, 4, 5, 3, 6, 7]

x = [i for i in x if i!=3]

print(x)

[1, 2, 4, 5, 6, 7]

以上就是python列表的基础语法知识,更加深入的用法会在人工智能的学习过程中学到!

《Python零基础快速入门系列》快速导航:

推荐阅读:

相关文章
|
6天前
|
测试技术 开发者 Python
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
在 Python 中,创建列表有两种方法:使用方括号 `[]` 和调用 `list()` 函数。虽然两者都能创建空列表,但 `[]` 更简洁、高效。性能测试显示,`[]` 的创建速度比 `list()` 快约一倍。此外,`list()` 可以接受一个可迭代对象作为参数并将其转换为列表,而 `[]` 则需要逐一列举元素。综上,`[]` 适合创建空列表,`list()` 适合转换可迭代对象。
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
|
9天前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
27 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
9天前
|
计算机视觉 Python
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
这篇文章介绍了如何使用Python的OpenCV库将多张图片合并为一张图片显示,以及如何使用matplotlib库从不同txt文档中读取数据并绘制多条折线图。
31 3
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
|
2天前
|
数据处理 开发者 Python
Python中的列表推导式:一种优雅的代码简化技巧####
【10月更文挑战第15天】 本文将深入浅出地探讨Python中列表推导式的使用,这是一种强大且简洁的语法结构,用于从现有列表生成新列表。通过具体示例和对比传统循环方法,我们将揭示列表推导式如何提高代码的可读性和执行效率,同时保持语言的简洁性。无论你是Python初学者还是有经验的开发者,掌握这一技能都将使你的编程之旅更加顺畅。 ####
9 1
|
6天前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
25 2
|
7天前
|
JSON 安全 数据安全/隐私保护
深度剖析:Python如何运用OAuth与JWT,为数据加上双保险🔐
【10月更文挑战第10天】本文介绍了OAuth 2.0和JSON Web Tokens (JWT) 两种现代Web应用中最流行的认证机制。通过使用Flask-OAuthlib和PyJWT库,详细展示了如何在Python环境中实现这两种认证方式,从而提升系统的安全性和开发效率。OAuth 2.0适用于授权过程,JWT则简化了认证流程,确保每次请求的安全性。结合两者,可以构建出既安全又高效的认证体系。
25 1
|
10天前
|
缓存 测试技术 开发者
深入理解Python装饰器:用法与实现
【10月更文挑战第7天】深入理解Python装饰器:用法与实现
9 1
|
6天前
|
存储 索引 Python
python数据结构之列表详解
列表是Python中极为灵活和强大的数据结构,适合于存储和操作有序数据集合。掌握其基本操作和高级特性对于编写高效、清晰的Python代码至关重要。通过本回答,希望能帮助你全面理解Python列表的使用方法,从而在实际编程中更加游刃有余。
10 0
|
10天前
|
Python
深入了解Python中星号变量的特殊用法
深入了解Python中星号变量的特殊用法
13 0
|
2天前
|
存储 Docker 容器
docker中挂载数据卷到容器
【10月更文挑战第12天】
14 5