引言

列表 list 是由一系列按照特定顺序排列的元素组成的,它是一种有序的数据集合。
你可以添加任何类型的元素到列表中,其中的元素之间可以没有任何关系。

列表简介

Python 使用方括号 [] 来定义列表,列表中的每个值称为元素。
每个元素之间用逗号 , 分割开,每个元素都有自己唯一的索引值。
索引值分上标索引和下标索引,下标索引从 0 开始,上标索引从 -1 开始。
你可以理解为:下标索引 = 正序索引,上标索引 = 倒序索引

创建列表

一般将创建的列表赋给一个变量,因此给变量取个有意义的名字是个不错的注意
打印列表时,会将方括号 [] 也打印出来

如果你想定义一个空列表可以直接使用方括号 [] 而不在里面传值
定义一个人员列表,如下示例。

persons = ['张三','李四','王五','赵六','钱七','孙八']
print(persons)
# 运行结果:['张三', '李四', '王五', '赵六', '钱七', '孙八']

列表取值

列表有两种取值方式

  1. 按索引号取值
  2. 范围取值

按索引号取值

在列表变量后面加上方括号 [] 里面传入元素的索引号,如下示例

persons = ['张三','李四','王五','赵六','钱七','孙八']
print(persons[0])
# 运行结果:张三

范围取值

范围取值只需在方括号内传入两个参数,即 [开始索引:结束索引]
Python 遵循左闭右开原则,即包含左边的而不包含右边的,所以实际取到的最后一个值是 结束索引-1。

1. 列表范围取值

例如取值 1~3 位置的元素,实际只取值到 1~2 位置的元素,如下示例

persons = ['张三','李四','王五','赵六','钱七','孙八']
print(persons[0:3])
# 运行结果:['张三', '李四', '王五']
2. 范围取值指定步长

范围取值可以指定步长,只需传入3个参数,即 [开始索引:结束索引:指定步长]
如果你想范围取值的时候隔一个或N个元素取值,指定步长是个不错的注意。

# 隔一个元素取值
persons = ['张三','李四','王五','赵六','钱七','孙八']
print(persons[0:5:2])
# 运行结果:['张三', '王五', '钱七']

取值索引越界问题

注意: 列表取值时索引不能越界,如果取值索引超出列表的索引范围,会报一个 IndexError 的错误

# 例如以下示例
persons = ['张三', '李四', '王五']
print(persons[3])
# 运行报出错误:IndexError: list index out of range
# 翻译过来就是“列表索引超出范围”,因为列表中索引位置 3 根本没有任何元素

新增

列表的新增操作

1. 在指定位置插入元素 insert()
# 插入元素
persons = ['张三','李四','王五','赵六','钱七','孙八']
persons.insert(6,'杨九')
print(persons)
# 运行结果:['张三', '李四', '王五', '赵六', '钱七', '孙八', '杨九']
2. 方法在列表末尾追加元素 append()
# 在末尾追加元素
persons = ['张三','李四','王五','赵六','钱七','孙八']
persons.append('杨九')
print(persons)
# 运行结果:['张三', '李四', '王五', '赵六', '钱七', '孙八', '杨九']
3. 在列表末尾追加多个元素 extend()

使用 extend() 方法在末尾同时追加多个元素

# 同时在末尾追加多个元素
persons = ['张三','李四','王五','赵六','钱七','孙八']
persons.extend(['杨九','吴十'])
print(persons)
# 运行结果:['张三', '李四', '王五', '赵六', '钱七', '孙八', '杨九', '吴十']

删除

列表的删除操作

1. 按索引号弹出元素 pop()

pop() 有返回值,弹出的元素可以保存到一个新的变量中,以便下次使用,也可以不保存,不保存就是删除

以下示例中很好的体现了 pop() 弹出的元素能够保存到另一个变量中

persons = ['张三', '李四', '王五', '赵六', '钱七', '孙八', '杨九', '吴十']
persons2 = persons.pop(0)
print(persons)  # 运行结果:['李四', '王五', '赵六', '钱七', '孙八', '杨九', '吴十']
print(persons2)  # 运行结果:张三
2. 按元素名称移除元素 remove()

值得注意的是,如果列表中存在多个相同的元素,remove() 方法只会移除正序索引遇到的第一个元素,如果想移除全部可以使用遍历

persons = ['张三', '李四', '王五', '赵六', '钱七', '孙八', '杨九', '吴十']
persons.remove('张三')
print(persons)  # 运行结果:['李四', '王五', '赵六', '钱七', '孙八', '杨九', '吴十']
3. 删除元素 del

del 是Python的语句,而不是列表 list 的方法,del是传入索引号删除的,但没有返回值

persons = ['张三', '李四', '王五', '赵六', '钱七', '孙八', '杨九', '吴十']
del persons[0]
print(persons)  # 运行结果:['李四', '王五', '赵六', '钱七', '孙八', '杨九', '吴十']

其他

列表的一些其他使用方法

1. len() 函数

使用 len() 函数看列表共有几个元素

persons = ['张三','李四','王五','赵六','钱七','孙八']
print( len(persons) )  # 运行结果:6
2. count() 函数

使用 count() 方法查看元素在列表中出现几次

# 获取元素 李四 在列表中出现几次
persons = ['张三','李四','王五','李四','赵六','钱七','孙八']
cnt = persons.count('李四')
print(cnt)  # 运行结果:2
3. 使用 index() 函数查看元素索引号

index() 方法只返回遇到的第一个符合条件的元素,如果有多个重复的元素名称需要使用遍历

如下示例,查看元素 ”李四“ 的索引号时只返回遇到的第一个元素

persons = ['张三','李四','王五','李四','赵六','钱七','孙八']
print( persons.index('李四') )
# 运行结果:1

遍历获取 “李四” 的索引号,如下示例

persons = ['张三','李四','王五','李四','赵六','钱七','孙八']
i = 0
for p in persons:
    if p == '李四':
        print(i,end='\t')
    i += 1
# 运行结果:1    3
4. 使用 copy() 方法复制列表

复制出来的列表是一份独立全新的数据,更改原列表内容不会影响复制的列表

# 复制列表
persons = ['张三' , '李四' , '王五', '赵六', '钱七', '孙八', '杨九', '吴十']
persons2 = persons.copy()
persons.remove('李四')
print(persons) # 运行结果:['张三', '王五', '赵六', '钱七', '孙八', '杨九', '吴十']
print(persons2) # 运行结果:['张三', '李四', '王五', '赵六', '钱七', '孙八', '杨九', '吴十']
5. 分割列表 split()

将字符串数据按特定规则分割成列表

例如以下示例, persons 变量中存储的字符串,每个人员用逗号 , 分割开,使用 split() 方法可以让其分割成列表

persons = '张三,李四,王五,赵六,钱七,孙八,杨九,吴十'
persons_list = persons.split(',')
print(persons_list)
# 运行结果:['张三', '李四', '王五', '赵六', '钱七', '孙八', '杨九', '吴十']
6. 成员运算符 in

判断数据是否存在列表中

# 使用成员运算符判断张三是否存在 `persons` 列表中
persons = ['张三' , '李四' , '王五', '赵六', '钱七', '孙八', '杨九', '吴十']
persons2 = '张三'
print(persons2 in persons)
# 运行结果:True
7. 身份运算符 is

判断两个变量是否使用同一内存地址,是否指向同一块内存空间

persons = ['张三' , '李四' , '王五', '赵六', '钱七', '孙八', '杨九', '吴十']
persons2 = persons.copy()
persons3 = persons
print(persons2 is persons)  # 运行结果:False
print(persons3 is persons)  # 运行结果:False
8. 清空列表内容 clear()

以下清空列表示例中很好的展示了 copy() 出来的数据是一块独立全新的数据,清空 persons 列表的内容对它丝毫不受影响

persons = ['张三' , '李四' , '王五', '赵六', '钱七', '孙八', '杨九', '吴十']
persons2 = persons.copy()
persons3 = persons
persons.clear()
print(persons)
print(persons2)
print(persons3)
'''
运行结果:
[]
['张三', '李四', '王五', '赵六', '钱七', '孙八', '杨九', '吴十']
[]
'''

Python 基础 2-1 列表入门的更多相关文章

  1. 『Python基础-8』列表

    『Python基础-8』列表 1. 列表的基本概念 列表让你能够在一个地方存储成组的信息,其中可以只包含几个 元素,也可以包含数百万个元素. 列表由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...

  2. Python基础 小白[7天]入门笔记

    笔记来源 Day-1 基础知识(注释.输入.输出.循环.数据类型.随机数) #-*- codeing = utf-8 -*- #@Time : 2020/7/11 11:38 #@Author : H ...

  3. .Net程序员之Python基础教程学习----列表和元组 [First Day]

    一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...

  4. Python基础学习Day4 列表的使用方法、range 用法、in用法

    一.列表 1.1列表:python基础数据类型之一:其他语言也有列表的概念,js 数组,可索引 ,可切片,可加步长 1.2列表的索引,切片,切片+ 步长 结果: 注意:列表里元素的数据类型,就是它本身 ...

  5. python基础教程1:入门基础知识

    写在系列前,一点感悟 没有梳理总结的知识毫无价值,只有系统地认真梳理了才能形成自己的知识框架,否则总是陷入断片儿似的学习-遗忘循环中. 学习方法真的比刻苦"傻学"重要多了,而最重要 ...

  6. python基础之02列表/元组/字典/set集合

    python中内置的数据类型有列表(list)元组(tuple)字典(directory). 1 list list是一种可变的有序的集合.来看一个list实例: #第一种方法: >>&g ...

  7. Python 基础教程 —— 网络爬虫入门篇

    前言 Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言,它由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年.自面世以后,Pytho ...

  8. 2015/9/1 Python基础(6):列表

    列表和字符串类型很相似,是同样的序列式数据类型.但是字符串只能由字符组成,列表可以保留任意数目的Python对象的灵活的容器.Python的列表比C的数组要灵活,数组里面只能是一种类型,列表可以有多种 ...

  9. Python基础数据类型之列表和元组

    一.列表   list 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: li ...

  10. python基础数据类型--list列表

    列表: 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: li = [‘alex ...

随机推荐

  1. layui修改表格行高

    .layui-table-cell { height: auto !important; white-space: normal; }

  2. SQL查询连续年份

    有这样一个问题,给出一个表格记录了夺冠球队的名称和年份,我们要做的就是写出一条SQL语句,查询再次期间连续夺冠的有哪些,起止时间是什么 下边是代码 create table #t(TEAM vaarc ...

  3. package.json和package-lock.json的区别

    参考:https://blog.csdn.net/c2311156c/article/details/80320046 package.json: 主要用来定义项目中需要依赖的包 package-lo ...

  4. java 双重校验性volatile

    A a = new A(); 上述可拆分为三个步骤: -1.分配地址 -2.初始化对象 -3.将 变量a 指向这个地址 在准时制生产方式(Just In Time简称JIT)时,可能发生指令重排: 在 ...

  5. CF963E Circles of Waiting

    Circles of Waiting 求一个整点四连通随机游⾛,离原点距离超过R期望步数.R≤50. 带状矩阵法 本质上就是网格图的随机游走. \[ E_x=\sum_y P_{x,y}E_y+1 \ ...

  6. Oracle 19C的下载和安装部署

    1.官网下载zip包. 2.解压到/usr/local/oracle 目录. 3.创建用户和用户组 /usr/sbin/useradd -u oracle //用户组oracle /usr/sbin/ ...

  7. Jpa动态多表if多条件联合查询,并对查询结果进行分页

    public Page<Map<String, Object>> resourceList(TeachingInfo teachingInfo, Pageable pageab ...

  8. 关于respond.js

    作用:可以让ie8及以下支持css3的媒体查询. 有几个问题: 1.由于浏览器的安全机制,Respond.js 不能在通过 file:// 协议(打开本地HTML文件所用的协议)访问的页面上发挥正常的 ...

  9. SCP-bzoj-1090

    项目编号:bzoj-1090 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 区间DP.设计状态f[i][j]表示压缩从第i位到第j位的字符串所需的最小长度.转移方式有三种: •初始化:j-i ...

  10. BZOJ 3569: DZY Loves Chinese II(线性基)

    传送门 解题思路 首先构造出一个生成树,考虑不连接的情况.假设连通两点的非树边和树边都断掉后不连通,那么可以给所有的非树边随机一个互不相同的值,然后树边的权值为过他两端点的非树边权值的异或和,这个可以 ...