AI数据容器底层核心之Python列表

举报
机器未来 发表于 2022/05/25 23:24:17 2022/05/25
【摘要】 列表是Python容器数据类型,它是整个人工智能体系的容器数据结构底层核心,在它的基础上,扩展出了Numpy——机器学习数据容器,扩展出了Tensor——深度学习数据容器,所以要想学会人工智能,必须理解列表的使用。
  • 这是机器未来的第7篇文章

    写在前面:

    • 博客简介:专注AIoT领域,追逐未来时代的脉搏,记录路途中的技术成长!
    • 专栏简介:本专栏的核心就是:快!快!快!2周快速拿下Python,具备项目开发能力,为机器学习和深度学习做准备。
    • 面向人群:零基础编程爱好者
    • 专栏计划:接下来会逐步发布跨入人工智能的系列博文,敬请期待
    • Python零基础快速入门系列
    • 快速入门Python数据科学系列
    • 人工智能开发环境搭建系列
    • 机器学习系列
    • 物体检测快速入门系列
    • 自动驾驶物体检测系列

@[toc]

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?

52从输出的描述信息中可知,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))

54

2.1.2 []列表运算符

x1 = []                 # 空列表
print(x1, type(x1))
x2 = [1, 2, 3, 4]       # 有元素的列表
print(x2, type(x2))

55

2.2 列表常用方法

x = [1, 2, 3, 4, 5]
dir(x)

[‘add’,

class’,

contains’,

delattr’,

delitem’,

dir’,

doc’,

eq’,

format’,

ge’,

getattribute’,

getitem’,

gt’,

hash’,

iadd’,

imul’,

init’,

init_subclass’,

iter’,

le’,

len’,

lt’,

mul’,

ne’,

new’,

reduce’,

reduce_ex’,

repr’,

reversed’,

rmul’,

setattr’,

setitem’,

sizeof’,

str’,

subclasshook’,

‘append’,

‘clear’,

‘copy’,

‘count’,

‘extend’,

‘index’,

‘insert’,

‘pop’,

‘remove’,

‘reverse’,

‘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零基础快速入门系列》快速导航:

推荐阅读:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200