Python3学习笔记之列表方法示例详解


Posted in Python onOctober 06, 2017

前言

本文主要给大家介绍了关于Python3列表方法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

1 使用[]或者list()创建列表

user = []
user = list()

2 使用list() 可以将其他类型转换成列表

# 将字符串转成列表
>>> list('abcde')
['a', 'b', 'c', 'd', 'e']

# 将元祖转成列表
>>> list(('a','b','c'))
['a', 'b', 'c']

3 使用[offset]获取元素 或 修改元素

>>> users = ['a','b','c','d','e']
# 可以使用整数来获取某个元素
>>> users[0]
'a'
# 可以使用负整数来表示从尾部获取某个元素
>>> users[-1]
'e'

# 数组越界会报错
>>> users[100]
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> users[-100]
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IndexError: list index out of range

# 修改某个元素
>>> users[0] = 'wdd'
>>> users
['wdd', 'b', 'c', 'd', 'e']
>>>

4 列表切片与提取元素

列表的切片或者提取之后仍然是一个列表

形式如:list[start:end:step]

>>> users
['wdd', 'b', 'c', 'd', 'e']
# 正常截取 注意这里并不会截取到users[2]
>>> users[0:2]
['wdd', 'b']
# 也可从尾部截取
>>> users[0:-2]
['wdd', 'b', 'c']
# 这样可以获取所有的元素
>>> users[:]
['wdd', 'b', 'c', 'd', 'e']
# 也可以加上步长参数
>>> users[0:4:2]
['wdd', 'c']
# 也可以通过这种方式去将列表取反
>>> users[::-1]
['e', 'd', 'c', 'b', 'wdd']

# 注意切片时,偏移量可以越界,越界之后不会报错,仍然按照界限来处理 例如开始偏移量如果小于0,那么仍然会按照0去计算。
>>> users
['wdd', 'b', 'c', 'd', 'e']
>>> users[-100:3]
['wdd', 'b', 'c']
>>> users[-100:100]
['wdd', 'b', 'c', 'd', 'e']
>>>

5 使用append()添加元素至尾部

形式如:list.append(item)

>>> users
['wdd', 'b', 'c', 'd', 'e']
>>> users.append('ddw')
>>> users
['wdd', 'b', 'c', 'd', 'e', 'ddw']

6 使用extend()或+=合并列表

形式如:list1.extend(list2)

这两个方法都会直接修改原列表

>>> users
['wdd', 'b', 'c', 'd', 'e', 'ddw']
>>> names
['heihei', 'haha']
>>> users.extend(names)
>>> users
['wdd', 'b', 'c', 'd', 'e', 'ddw', 'heihei', 'haha']
>>> users += names
>>> users
['wdd', 'b', 'c', 'd', 'e', 'ddw', 'heihei', 'haha', 'heihei', 'haha']

7 使用insert()在指定位置插入元素

形式如:list.insert(offset, item)

insert也不存在越界的问题,偏移量正负都行,越界之后会自动伸缩到界限之内,并不会报错

>>> users
['wdd', 'b', 'c', 'd', 'e', 'ddw', 'heihei', 'haha', 'heihei', 'haha']
>>> users.insert(0,'xiaoxiao')
>>> users
['xiaoxiao', 'wdd', 'b', 'c', 'd', 'e', 'ddw', 'heihei', 'haha', 'heihei', 'haha']
>>> users.insert(-1,'-xiaoxiao')
>>> users
['xiaoxiao', 'wdd', 'b', 'c', 'd', 'e', 'ddw', 'heihei', 'haha', 'heihei', '-xiaoxiao', 'haha']
# 下面-100肯定越界了
>>> users.insert(-100,'-xiaoxiao')
>>> users
['-xiaoxiao', 'xiaoxiao', 'wdd', 'b', 'c', 'd', 'e', 'ddw', 'heihei', 'haha', 'heihei', '-xiaoxiao', 'haha']
# 下面100也是越界了
>>> users.insert(100,'-xiaoxiao')
>>> users
['-xiaoxiao', 'xiaoxiao', 'wdd', 'b', 'c', 'd', 'e', 'ddw', 'heihei', 'haha', 'heihei', '-xiaoxiao', 'haha', '-xiaoxiao']

8 使用del删除某个元素

形式如:del list[offset]

del是python的语句,而不是列表的方法,del删除不存在的元素时,也会提示越界

>>> users
['-xiaoxiao', 'xiaoxiao', 'wdd', 'b', 'c', 'd', 'e', 'ddw', 'heihei', 'haha', 'heihei', '-xiaoxiao', 'haha', '-xiaoxiao']
>>> del users[0]
>>> users
['xiaoxiao', 'wdd', 'b', 'c', 'd', 'e', 'ddw', 'heihei', 'haha', 'heihei', '-xiaoxiao', 'haha', '-xiaoxiao']
>>> del users[100]
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> del users[-100]
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range

9 使用remove删除具有指定值的元素

形式如:list.remove(value)

>>> users
['xiaoxiao', 'wdd', 'b', 'c', 'd', 'e', 'ddw', 'heihei', 'haha', 'heihei', '-xiaoxiao', 'haha', '-xiaoxiao']
# 删除指定值'c'
>>> users.remove('c')
>>> users
['xiaoxiao', 'wdd', 'b', 'd', 'e', 'ddw', 'heihei', 'haha', 'heihei', '-xiaoxiao', 'haha', '-xiaoxiao']
# 删除不存在的值会报错
>>> users.remove('alsdkfjalsdf')
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
# 如果该值存在多个,那么只能删除到第一个
>>> users.remove('haha')
>>> users
['xiaoxiao', 'wdd', 'b', 'd', 'e', 'ddw', 'heihei', 'heihei', '-xiaoxiao', 'haha', '-xiaoxiao']

10 使用pop()方式返回某个元素后,并在数组里删除它

形式如:list.pop(offset=-1) 偏移量默认等于-1,也就是删除最后的元素

>>> users
['xiaoxiao', 'wdd', 'b', 'd', 'e', 'ddw', 'heihei', 'heihei', '-xiaoxiao', 'haha', '-xiaoxiao']
# 删除最后的元素
>>> users.pop()
'-xiaoxiao'
>>> users
['xiaoxiao', 'wdd', 'b', 'd', 'e', 'ddw', 'heihei', 'heihei', '-xiaoxiao', 'haha']
# 如果列表本身就是空的,那么pop时会报错
>>> user.pop(0)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IndexError: pop from empty list
>>> users.pop(0)
'xiaoxiao'
>>> users
['wdd', 'b', 'd', 'e', 'ddw', 'heihei', 'heihei', '-xiaoxiao', 'haha']
# 越界时也会报错
>>> users.pop(100)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IndexError: pop index out of range

11 使用index()查询具有特定值的元素位置

形式如:list.index(value)

# index只会返回第一遇到该值得位置
>>> users
['wdd', 'b', 'd', 'e', 'ddw', 'heihei', 'heihei', '-xiaoxiao', 'haha']
>>> users.index('heihei')
5

# 如果该值不存在,也会报错
>>> users.index('laksdf')
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
ValueError: 'laksdf' is not in list

12 使用in判断值是否存在列表

形式如:value in list

>>> users
['wdd', 'b', 'd', 'e', 'ddw', 'heihei', 'heihei', '-xiaoxiao', 'haha']
>>> 'wdd' in users
True

13 使用count()记录特定值出现的次数

形式如:list.count(value)

>>> users
['wdd', 'b', 'd', 'e', 'ddw', 'heihei', 'heihei', '-xiaoxiao', 'haha']
>>> users.count('heihei')
2
>>> users.count('h')
0

14 使用join()将列表转为字符串

形式如:string.join(list)

>>> users
['wdd', 'b', 'd', 'e', 'ddw', 'heihei', 'heihei', '-xiaoxiao', 'haha']
>>> ','.join(users)
'wdd,b,d,e,ddw,heihei,heihei,-xiaoxiao,haha'
>>> user
[]
>>> ','.join(user)
''

15 使用sort()重新排列列表元素

形式如:list.sort()

>>> users
['wdd', 'b', 'd', 'e', 'ddw', 'heihei', 'heihei', '-xiaoxiao', 'haha']
# 默认是升序排序
>>> users.sort()
>>> users
['-xiaoxiao', 'b', 'd', 'ddw', 'e', 'haha', 'heihei', 'heihei', 'wdd']
# 加入reverse=True, 可以降序排序
>>> users.sort(reverse=True)
>>> users
['wdd', 'heihei', 'heihei', 'haha', 'e', 'ddw', 'd', 'b', '-xiaoxiao']

# 通过匿名函数,传入函数进行自定义排序
>>> students
[{'name': 'wdd', 'age': 343}, {'name': 'ddw', 'age': 43}, {'name': 'jik', 'age': 90}]
>>> students.sort(key=lambda item: item['age'])
>>> students
[{'name': 'ddw', 'age': 43}, {'name': 'jik', 'age': 90}, {'name': 'wdd', 'age': 343}]
>>> students.sort(key=lambda item: item['age'], reverse=True)
>>> students
[{'name': 'wdd', 'age': 343}, {'name': 'jik', 'age': 90}, {'name': 'ddw', 'age': 43}]
>>>

16 使用reverse()将列表翻转

形式如:list.reverse()

>>> users
['wdd', 'heihei', 'heihei', 'haha', 'e', 'ddw', 'd', 'b', '-xiaoxiao']
>>> users.reverse()
>>> users
['-xiaoxiao', 'b', 'd', 'ddw', 'e', 'haha', 'heihei', 'heihei', 'wdd']

17 使用copy()复制列表

形式如:list2 = list1.copy()

list2 = list1 这种并不是列表的复制,只是给列表起了别名。实际上还是指向同一个值。

>>> users
['-xiaoxiao', 'b', 'd', 'ddw', 'e', 'haha', 'heihei', 'heihei', 'wdd']
>>> users2 = users.copy()
>>> users2
['-xiaoxiao', 'b', 'd', 'ddw', 'e', 'haha', 'heihei', 'heihei', 'wdd']
>>>

18 使用clear()清空列表

形式如: list.clear()

>>> users2
['-xiaoxiao', 'b', 'd', 'ddw', 'e', 'haha', 'heihei', 'heihei', 'wdd']
>>> users2.clear()
>>> users2
[]

19 使用len()获取列表长度

形式如:len(list)

>>> users
['-xiaoxiao', 'b', 'd', 'ddw', 'e', 'haha', 'heihei', 'heihei', 'wdd']
>>> len(users)
9

20 关于列表越界的深入思考

写了这些方法后,我有一些疑问,为什么有些操作会提示越界,有些则不会呢?

会提示偏移量越界的操作有

  • list[offset] 读取或者修改某个元素
  • del list[offset] 删除指定位置的元素
  • list.remove(value) 删除指定值的元素
  • list.pop(offset) 删除指定位置的元素

如果偏移量越界,这些方法会报错的。我的个人理解是:

假如我想读取偏移量为10的元素,但是该元素并不存在,如果系统自动给你读取了列表的最后一个元素,而且不报错,这是无法容忍的bug。 如果我想删除第10个元素,但是第10个元素并不存在,而系统帮你删除了列表的最后一个元素,我觉得这也是无法容忍的。

所以在使用这些方法时,务必确认该偏移量的元素是否存,否则可能会报错。

总结

以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python list 合并连接字符串的方法
Mar 09 Python
Python导入oracle数据的方法
Jul 10 Python
详解python的几种标准输出重定向方式
Aug 15 Python
利用Django内置的认证视图实现用户密码重置功能详解
Nov 24 Python
python实现文件助手中查看微信撤回消息
Apr 29 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
python编写计算器功能
Oct 25 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
keras 获取某层输出 获取复用层的多次输出实例
May 23 Python
在keras 中获取张量 tensor 的维度大小实例
Jun 10 Python
vue.js刷新当前页面的实例讲解
Dec 29 Python
python百行代码实现汉服圈图片爬取
Nov 23 Python
python获取外网IP并发邮件的实现方法
Oct 01 #Python
Python之自动获取公网IP的实例讲解
Oct 01 #Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 #Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
Oct 01 #Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 #Python
Python实现字符串反转的常用方法分析【4种方法】
Sep 30 #Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
Sep 30 #Python
You might like
在PHP中利用XML技术构造远程服务(上)
2006/10/09 PHP
php中看实例学正则表达式
2006/12/25 PHP
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
php读取和保存base64编码的图片内容
2017/04/22 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
iframe实用操作锦集
2014/04/22 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
2018/08/27 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
Django中使用Celery的教程详解
2018/08/24 Python
windows下python安装小白入门教程
2018/09/18 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
2019/08/08 Python
关于Django Models CharField 参数说明
2020/03/31 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
环境科学专业大学生自荐信格式
2013/09/21 职场文书
校园环保建议书
2014/05/14 职场文书
三好学生个人总结
2015/02/15 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
2016年大学校运会广播稿件
2015/12/21 职场文书
《青山不老》教学反思
2016/02/22 职场文书
儿童诗两首教学反思
2016/02/23 职场文书