Python: list列表的11个内置方法
先来逼逼两句:
在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。
在VBA中有使用数组,可以把多个数据存储到一起,通过数组下标可以访问数组中的每个元素。
Python 中没有数组,但是加入了更加强大的列表(list)。
下面就对列表的内置方法进行介绍。
通过dir(list)可以查看列表的属性和内置方法。
print(dir(list))
Python学习交流Q群:660193417###
['__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']
可以看出,列表有11个内置方法。
1 append()、extend()、insert()方法
2 clear()、remove()、pop()方法
3 count()、index()方法
4 sort()、reverse()方法
5 copy()方法

1 append()、extend()、insert()方法 list.append(obj)
obj – 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等。
在列表的末尾追加元素。
list1 = ['Python', 'C++', 'Java']
# 追加元素
list1.append('PHP')
print(list1)
#追加元组,整个元组被当成一个元素
t = ('JavaScript', 'C#', 'Go')
list1.append(t)
print(list1)
#追加列表,整个列表被当成一个元素
list1.append(['Ruby', 'SQL'])
print(list1)
['Python', 'C++', 'Java', 'PHP']
['Python', 'C++', 'Java', 'PHP', ('JavaScript', 'C#', 'Go')]
['Python', 'C++', 'Java', 'PHP', ('JavaScript', 'C#', 'Go'), ['Ruby', 'SQL']]
list.extend(seq)
seq – 元素列表,可以是列表、元组、集合、字典,若为字典,则仅会将键(key)作为元素依次添加至原列表的末尾。
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
extend() 和 append() 的不同之处在于:extend() 不会把列表或元组视为一个整体,而是把它们包含的元素逐个添加到列表中。
Python学习交流Q群:660193417###
list2 = ['Python', 'C++', 'Java']
# 追加元素
list2.extend('C')
print(list2)
# 追加元组,元祖被拆分成多个元素
t = ('JavaScript', 'C#', 'Go')
list2.extend(t)
print(list2)
# 追加列表,列表被拆分成多个元素
list2.extend(['Ruby', 'SQL'])
print(list2)
['Python', 'C++', 'Java', 'C']
['Python', 'C++', 'Java', 'C', 'JavaScript', 'C#', 'Go']
['Python', 'C++', 'Java', 'C', 'JavaScript', 'C#', 'Go', 'Ruby', 'SQL']
list.insert(index, obj)
index – 对象obj需要插入的索引位置。
obj – 要插入列表中的对象。
将指定对象插入列表的指定位置。
list3 = ['Google', 'Runoob', 'Taobao']
list3.insert(1, 'Baidu')
print ('列表插入元素后为 : ', list3)
列表插入元素后为 : ['Google', 'Baidu', 'Runoob', 'Taobao']

2 clear()、remove()、pop()方法
list.clear()
清空列表,类似于del a[:]。
list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list2 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list1.clear()
del list2[:]
print("列表清空后的list1: ", list1)
print("列表清空后的list2: ", list2)
列表清空后的list1: []
列表清空后的list2: []
列表清空后的list1: []
列表清空后的list2: []
list.remove(obj)
移除列表中某个值的第一个匹配项。
list1 = ['Google', 'Baidu', 'Runoob', 'Taobao', 'Baidu']
list1.remove('Taobao')
print ("列表现在为 : ", list1)
list1.remove('Baidu')
print ("列表现在为 : ", list1)
列表现在为 : ['Google', 'Baidu', 'Runoob', 'Baidu']
列表现在为 : ['Google', 'Runoob', 'Baidu']
list.pop([index=-1])
index – 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
list1 = ['Google', 'Runoob', 'Taobao']
print(list1.pop())
print ("列表现在为 : ", list1, end="\n\n")
print(list1.pop(0))
print ("列表现在为 : ", list1)
Taobao
列表现在为 : ['Google', 'Runoob']
Google
列表现在为 : ['Runoob']
3 count()、index()方法
list.count(obj)
统计某个元素在列表中出现的次数。
aList = [123, 'Google', 'Runoob', 'Taobao', 123];
print ("123 元素个数 : ", aList.count(123))
print ("Runoob 元素个数 : ", aList.count('Runoob'))
123 元素个数 : 2
Runoob 元素个数 : 1
list.index(x[, start[, end]])
start -- 可选,查找的起始位置。
end -- 可选,查找的结束位置。
从列表中找出某个值第一个匹配项的索引位置,如果没有找到对象则抛出异常。
list1 = ['Google', 'Runoob', 'Taobao', 'Runoob', 'QQ']
print ('Runoob 索引值为', list1.index('Runoob'))
print ('Runoob 索引值为', list1.index('Runoob',2,4))
list1 = ['Google', 'Runoob', 'Taobao', 'Runoob', 'QQ']
print ('Runoob 索引值为', list1.index('Runoob'))
print ('Runoob 索引值为', list1.index('Runoob',2,4))
Runoob 索引值为 1
Runoob 索引值为 3

4 sort()、reverse()方法
list.sort( key=None, reverse=False)
key -- 指定在进行比较前要在每个列表元素上调用的函数(或其他可调用对象)。
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
aList = ['Google', 'Runoob', 'Taobao', 'Facebook']
aList.sort() # 升序排列
print("List : ", aList)
List : ['Facebook', 'Google', 'Runoob', 'Taobao']
# 获取序列的第二个元素
def take_second(elem):
return elem[1]
# 列表
list1 = [(2, 2), (3, 4), (4, 1), (1, 3)]
# 指定第二个元素,升序排列
list1.sort(key=take_second)
# 输出类别
print('排序后的列表:', list1)
排序后的列表:[(4, 1), (2, 2), (1, 3), (3, 4)]
对于排序,Python中还有一个 sorted() 内置函数。两者的区别在于,list.sort() 方法会直接修改原列表(并返回 None 以避免混淆),而 sorted() 内置函数会返回一个新的排序后的列表。
student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10)]
new_tuples = sorted(student_tuples, key=lambda student: student[2]) # sort by age
print("排序前:",student_tuples)
print("排序后:",new_tuples)
排序前:[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
排序后:[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
list.reverse()
对列表的元素进行反向排序。
list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list1.reverse()
print ("列表反向排序后: ", list1)
列表反向排序后: ['Baidu', 'Taobao', 'Runoob', 'Google']
5 copy()方法
list.copy()
复制列表,类似于 a[:]。
注意:list.copy()方法所遵循的拷贝原理,是浅拷贝,也就是说,只拷贝父对象,不会拷贝对象内部的子对象。关于深拷贝和浅拷
贝的更多内容,参见
文末的延伸阅读[1]。
a = [1, 2, [3, 4], 5, 6]
b = a.copy()
a.append(7)
a[2][1] = 10
print("a = ", a)
print("b = ", b)
a = [1, 2, [3, 10], 5, 6, 7]
b = [1, 2, [3, 10], 5, 6]
可以看出,列表a中新增元素,对列表b没有影响;但是如果修改了a中的列表对象,同样也会影响到b。
Python: list列表的11个内置方法的更多相关文章
- python学习笔记:(三)list(列表)常用的内置方法
list(列表)包含一些内置的方法,以下为详细介绍: (方法调用:对象.方法(参数)) 1.append() 在列表的末尾添加新的对象 如: lst=[1,2,3] lst.append(4) --- ...
- python之字符串,列表,字典,元组,集合内置方法总结
目录 数字类型的内置方法 整型/浮点型 字符串类型的内置方法 列表的内置方法 字典的内置方法 元组的内置方法 集合类型内置方法 布尔类型 数据类型总结 数字类型的内置方法 整型/浮点型 加 + 减 - ...
- Python之面向对象之反射、内置方法
一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被 ...
- python 入门基础4 --数据类型及内置方法
今日目录: 零.解压赋值+for循环 一. 可变/不可变和有序/无序 二.基本数据类型及内置方法 1.整型 int 2.浮点型float 3.字符串类型 4.列表类型 三.后期补充内容 零.解压赋值+ ...
- python基础语法18 类的内置方法(魔法方法),单例模式
类的内置方法(魔法方法): 凡是在类内部定义,以__开头__结尾的方法,都是类的内置方法,也称之为魔法方法. 类的内置方法,会在某种条件满足下自动触发. 内置方法如下: __new__: 在__ini ...
- python for循环while循环数据类型内置方法
while 条件: 条件成立之后循环执行的子代码块 每次执行完循环体子代码之后都会重新判断条件是否成立 如果成立则继续执行子代码如果不成立则退出 break用于结束本层循环 ### 一:continu ...
- 4月17日 python学习总结 反射、object内置方法、元类
一.反射 下述四个函数是专门用来操作类与对象属性的,如何操作? 通过字符串来操作类与对象的属性,这种操作称为反射 class People: country="China" def ...
- python - setitem/getitem/delitem类的内置方法
# class 内置方法: # __setitem__ # __getitem__ # __delitem__ class Test(): X = 100 def __getitem__(self, ...
- Python之面向对象:类的内置方法
1.def __add__(self,other): c1+c2 两个实例的加法操作就是执行__add__()方法 2.__str__(self): print一个实例的时候,执行的是__str__( ...
随机推荐
- 数仓建模—建模工具PdMan(CHINER)介绍
数据仓库系列文章(持续更新) 数仓架构发展史 数仓建模方法论 数仓建模分层理论 数仓建模-宽表的设计 数仓建模-指标体系 数据仓库之拉链表 数仓-数据集成 数仓-数据集市 数仓-商业智能系统 数仓-埋 ...
- switch语法
1. js 代码 // 1. switch 语句也是多分支语句 也可以实现多选1 // 2. 语法结构 switch 转换.开关 case 小例子或者选项的意思 // switch (表达式) { / ...
- .NET宝藏API之:IHostedService,后台任务执行
我们在项目开发的过程中可能会遇到类似后台定时任务的需求,比如消息队列的消费者. 按照.NetF时的开发习惯首先想到的肯定是Windows Service,拜托,都什么年代了还用Windows服务(小声 ...
- HCNP Routing&Switching之端口隔离
前文我们了解了组播路由协议稀疏模式中的RP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16154347.html:今天我们来聊一聊二层交换机中有关v ...
- C#语法糖系列 —— 第二篇:聊聊 ref,in 修饰符底层玩法
自从 C# 7.3 放开 ref 之后,这玩法就太花哨了,也让 C# 这门语言变得越来越多范式,越来越重,这篇我们就来聊聊 ref,本质上来说 ref 的放开就是把 C/C++ 指针的那一套又拿回来了 ...
- 代码管理工具-Git基础介绍及常用技巧
目录 Git起源 基本概念 Branch.HEAD和Commit tree Git分支 git merge 和 git rebase 的区别和抉择 与远程仓库的交互 关于一些实际开发场景的问题和解决方 ...
- NLP教程(4) - 句法分析与依存解析
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...
- 面渣逆袭:Redis连环五十二问,图文详解,这下面试稳了!
大家好,我是老三,面渣逆袭系列继续,这节我们来搞定Redis--不会有人假期玩去了吧?不会吧? 基础 1.说说什么是Redis? Redis是一种基于键值对(key-value)的NoSQL数据库. ...
- Linux下使用ssh测试端口是否开启
当服务器上不允许使用telnet时,可以使用ssh测试远程服务器端口是否开启 具体命令如下 -v 显示连接debug信息 -p port 指定端口 ssh -v -p 80 root@192.168. ...
- 五、C++运算符重载,使面向对象编程更方便
复数类CComplex 编译器做对象运算的时候,会调用对象的运算符重载函数(优先调用成员方法):如果没有成员方法,就砸全局作用域找合适的运算符重载函数 ++和--运算符是单目运算符,在参数列表里放上一 ...