Python数据类型之List列表实例详解


Posted in Python onMay 08, 2019

本文实例讲述了Python数据类型之List列表。分享给大家供大家参考,具体如下:

list列表

1.概述:

通过之前的学习,我们知道变量可以存储数据,但是一个变量只能存储一个数据,现在有一个班级,班级有20个人,现在求班级的平均年龄。

若按照之前的方式来解决

age1 = 10
age2 = 12
...
age20 = 12
average = (age1 + age2 +...+age20)/20

在这里,很显然这种方法显得很麻烦,而python提供了一种解决方案,就是使用列表,可以随时添加和删除其中的元素。

本质:list列表的本质是一种有序的集合

2.创建列表

语法: 列表名 = [元素1,元素2,元素3…说明:列表中的选项被称为元素,跟string类似,下标也是从0开始计数

使用:创建列表

#创建空列表
list1 = []
#创建带有元素的列表
list2 = [10, 20, 30, 10]
print(list2)
list3 = list(range(1,10))
list4 = [i for i in range(10)]
print(list3)
print(list4)

输出:

[10, 20, 30, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

在列表中元素的数据类型可以不同(灵活性)

list3 = [33, "good", True, 10.32]
print(list3)

输出:

[33, 'good', True, 10.32]

3.列表元素的访问

3.1 列表的取值

功能:访问list列表中元素值

语法:列表名[索引]

list4 = [22, 33, 12, 32, 45]
#下标从0开始,最大值为len(list4)-1
print(list4[0])

输出:

22

注意:当索引值大于len(list4)-1的时候,会出现以下错误:

print(list4[5])
IndexError: list index out of range

这个错误就是下标越界【下标超出了可表示的范围】

3.2 列表元素的替换

功能:更改列表元素的值

语法:列表名[下标] = 值

list4 = [22, 33, 12, 32, 45]
list4[0] = "hello"
print(list4[0])
print(list4)

输出:

hello
['hello', 33, 12, 32, 45]

4.列表操作

4.1 列表组合

语法: 列表3 = 列表1 + 列表2

list1 = [1, 2, 3]
list2 = ['hello', 'yes', 'no']
list3 = list1 + list2
print(list3)

输出:

[1, 2, 3, 'hello', 'yes', 'no']

4.2 列表重复

语法: 列表2 = 列表1 * n

list1 = [1, 2, 3]
list2 = list1 * 2
print(list2)

输出:

[1, 2, 3, 1, 2, 3]

4.3 判断元素是否在列表中

语法:元素 in 列表

若存在则返回True,否则返回False

list1 = [1, 2, 3]
print(1 in list1)

输出:

True

4.4 列表截取

语法:列表[start: end] 表示获取从开始下标到结束下标的所有元素[start, end)

list1 = [1, 2, 3, 'hello', 'yes', 'no']
print(list1[2:4])
#若不指定start,则默认从0开始截取,截取到指定位置
#若不指定end,则从指定位置开始截取,截取到末尾结束

输出:

[3, 'hello']

4.5 二维列表

语法:列表 =[列表1,列表2,列表3,… ,列表n]

#创建二维列表,即列表中的元素还是列表
list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]

4.5 二维列表取值

语法:列表名[下标1][下标2]

注意:下标1代表第n个列表(下标从0开始),下标2代表第n个列表中的第n个元素

list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]
print(list1[0][0])

输出:

1

5.列表的方法

5.1 list.append(元素/列表)

功能:在列表中末尾添加新的元素【在原本的列表中追加元素】

注意:append()中的值可以是列表也可以是普通元素

>>> list1 = [3, 4, 6]
>>> list1.append(6)
>>> print(list1)
[3, 4, 6, 6]

5.2 list.extend(列表)

功能:在列表的末尾一次性追加另外一个列表中的多个值

注意:extend()中的值只能是列表/元组[一个可迭代对象],不能是元素。

>>> list1 = [1,2,3]
>>> list2 = [3, 4,5]
>>> list1.extend(list2)
>>> print(list1)
[1, 2, 3, 3, 4, 5]

5.3 list.insert(下标值, 元素/列表)

功能:在下标处插入元素,不覆盖原本的数据,原数据向后顺延。

注意:插入的数据可以是元素也可以为列表。

>>> list1 = [1,2,3]
>>> list1.insert(1,0)
>>> print(list1)
[1, 0, 2, 3]
>>> list1.insert(1,[2, 4, 8])
>>> print(list1)
[1, [2, 4, 8], 0, 2, 3]

5.4 list.pop(下标值)

功能:移除列表中指定下标处的元素(默认移除最后一个元素),并返回移除的数据。

>>> list1 = [1, [2, 4, 8], 0, 2, 3]
>>> list1.pop()
3
>>> print(list1)
[1, [2, 4, 8], 0, 2]
>>> list1.pop(2)
0
>>> print(list1)
[1, [2, 4, 8], 2]

5.5 list.remove(元素)

功能:移除列表中的某个元素第一个匹配结果

list1 = [1, 2,3,2,4]
list1.remove(2)
print(list1)

输出:

[1, 3, 2, 4]

5.6 list.clear()

功能:清除列表中所有的数据

>>> list1 = [1, 2, 3]
>>> list1.clear()
>>> print(list1)
[]

5.7 list.index(元素[, start][, stop])

功能:从指定的范围的列表中找出某个值第一匹配的索引值

若不指定范围,则默认是整个列表。

>>> list1 = [1, 2, 3]
>>> list1.index(2)
1
>>> list1.index(4)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
ValueError: 4 is not in list

注意:若在列表中找不到这个元素,则会报错。

5.8 list.count(元素)

功能:查看元素在列表中出现的次数

>>> list1 = [1, 2, 3, 1]
>>> list1.count(1)
2

5.9 len(list)

功能: 获取元素个数

>>> list1 = [1, 2, 3, 1]
>>> len(list1)
4

5.10 max(list)

语法:获取列表中的最大值,元素是不同的数据类型时不能使用

>>> list1 = [1, 2, 3, 1]
>>> max(list1)
3

5.11 min(list)

语法:获取列表中的最小值,元素是不同的数据类型时不能使用

>>> list1 = [1, 2, 3, 1]
>>> min(list1)

5.12 list.reverse()

语法: 列表倒叙,直接修改原列表,返回值为None。

>>> list1 = [1, 2, 3, 1]
>>> list1.reverse()
>>> print(list1)
[1, 3, 2, 1]

5.13 list.sort()

语法:列表排序 默认升序,元素是不同的数据类型时不能使用

>>> list1 = [1, 2, 3, 1]
>>> list1.sort()
>>> print(list1)
[1, 1, 2, 3]
#倒序
list1 = [1, 2,3,2,4]
list1.sort(reverse=False)
print(list1)

输出:

[1, 2, 2, 3, 4]

5.14 浅拷贝

语法:

list1 = [1, 2, 3]
​list2 = list1
>>> list1 = [1, 2, 3, 1]
>>> list2 = list1
>>> print(list2)
[1, 2, 3, 1]
>>> print(id(list1))
4314476424
>>> print(id(list2))
4314476424
list1 = [1, 2,3,2,4]
list2 = list1
list2[0] = 0
print(list1)

输出:

[0, 2, 3, 2, 4]

注意:浅拷贝为引用拷贝,类似于快捷方式。

浅拷贝中一个变量发生改变,另一个也相应发生改变,

5.15 深拷贝

语法:

list1 = [1, 2, 3]
​list2 = list1.copy()

方式2:

list2 = list1[:]
>>> list1 = [1, 2, 3, 1]
>>> list2 = list1.copy()
>>> print(list2)
[1, 2, 3, 1]
>>> print(id(list2))
4314525320
>>> print(id(list1))
4314524808
list1 = [1, 2,3,2,4]
list2 = list1[:]
print(list2)
print(id(list1))
print(id(list2))

输出:

[1, 2, 3, 2, 4]
2485711112520
2485710239496

注意:深拷贝为内存拷贝,开辟了新的内存空间

5.16 list(元组)

功能:将元组转为列表

>>> list1 = list((1, 2, 3, 4))
>>> print(list1)
[1, 2, 3, 4]

6.列表的遍历

6.1 使用for循环遍历列表

语法:

for 变量名 in 列表 :
​ 语句

功能:for循环主要用于遍历列表

遍历:指的是依次访问列表中的每一个元素,获取每个下标对应的元素值

说明:按照顺序获取列表中的每个元素,赋值给变量名,再执行语句,如此循环往复,直到取完列表中所有的元素为止

>>> list1 = ['hello', 78, '你好', 'good']
>>> for item in list1:
...   print(item)
... 
hello
78
你好
good

6.2 使用while循环遍历列表[使用下标循环]

语法:

下标 = 0
while 下标 < 列表的长度:
​ 语句
​ 下标 += 1

>>> list1 = ['hello', 78, '你好', 'good']
>>> index = 0
>>> while index < len(list1):
...   print(list1[index])
...   index += 1
... 
hello
78
你好
good

6.3 同时遍历下标与元素

语法:

for 下标,变量 in enumerate(列表)
​ 语句

>>> list1 = ['hello', 78, '你好', 'good']
>>> for index,item in enumerate(list1):
...   print(index, item)
... 
0 hello
1 78
2 你好
3 good

enumerate()[枚举]函数用于一个可遍历的数据对象(如列表,元组或者字符串)组合为一个索引序列,同时列出数据与数据下标,一般使用在for循环中
enumerate(obj, [start =0])
obj:一个可迭代对象
start:下标起始位置

7、List转dict

list1=[('a',1),('b',2),('c',3)]
dict1={k:v for k,v in list1}
dict2={v:k for k,v in list1}
print(dict1)
print(dict2)

输出:

{'a': 1, 'b': 2, 'c': 3}
{1: 'a', 2: 'b', 3: 'c'}

8、切片

8.1 一个冒号

list1=['a','b','c','d','e']
print('获取全部:',list1[:])
print('去头去尾:',list1[1:-1])
print('取[2,4)',list1[2:4])

输出:

获取全部: ['a', 'b', 'c', 'd', 'e']
去头去尾: ['b', 'c', 'd']
取[2,4) ['c', 'd']

冒号后面没有值则默认为list1的长度。

8.2两个冒号

冒号后面是步长,切片的步长默认为1,不可为0。

list1=['a','b','c','d','e']
print('获取全部:',list1[::])
print('列表倒置:',list1[::-1])
print('从下标0开始,步长为2',list1[::2])
print('从下标1开始,步长为2',list1[1::2])

输出:

获取全部: ['a', 'b', 'c', 'd', 'e']
列表倒置: ['e', 'd', 'c', 'b', 'a']
从下标0开始,步长为2 ['a', 'c', 'e']
从下标1开始,步长为2 ['b', 'd']

常用的是list1[::-1],列表倒置。

更多Python相关内容感兴趣的读者可查看本站专题:《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python 参数列表中的self 显式不等于冗余
Dec 01 Python
跟老齐学Python之使用Python查询更新数据库
Nov 25 Python
python3实现抓取网页资源的 N 种方法
May 02 Python
Python读取Json字典写入Excel表格的方法
Jan 03 Python
Tensorflow分类器项目自定义数据读入的实现
Feb 05 Python
Python面向对象之类的封装操作示例
Jun 08 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
python求绝对值的三种方法小结
Dec 04 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
深入了解Python 变量作用域
Jul 24 Python
Django自带的用户验证系统实现
Dec 18 Python
Python3使用TCP编写一个简易的文件下载器功能
May 08 #Python
详解Python的三种可变参数
May 08 #Python
Python数据类型之Tuple元组实例详解
May 08 #Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
May 08 #Python
python中正则表达式与模式匹配
May 07 #Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
May 07 #Python
python对象与json相互转换的方法
May 07 #Python
You might like
乱谈我对耳机、音箱的感受
2021/03/02 无线电
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
任意位置显示html菜单
2007/02/01 Javascript
jQuery 对象中的类数组操作
2009/04/27 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
JS求平均值的小例子
2013/11/29 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
深入理解jQuery事件绑定
2016/06/02 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
axios 封装上传文件的请求方法
2018/09/26 Javascript
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
彪马美国官网:PUMA美国
2017/03/09 全球购物
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
简述DNS进行域名解析的过程
2013/12/02 面试题
历史系自荐信范文
2013/12/24 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
西安交大自主招生自荐信
2014/01/27 职场文书
国家助学金获奖感言
2014/01/31 职场文书
经济职业学院毕业生自荐书
2014/03/17 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
nginx中proxy_pass各种用法详解
2021/11/07 Servers
python绘制简单直方图(质量分布图)的方法
2022/04/21 Python