前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python: list列表的内置方法介绍

Python: list列表的内置方法介绍

作者头像
Exploring
发布2022-09-20 14:16:25
9760
发布2022-09-20 14:16:25
举报
文章被收录于专栏:数据处理与编程实践

文章背景: 在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。在VBA中有使用数组,可以把多个数据存储到一起,通过数组下标可以访问数组中的每个元素。Python 中没有数组,但是加入了更加强大的列表(list)。下面就对列表的内置方法进行介绍。

通过dir(list)可以查看列表的属性和内置方法。

代码语言:javascript
复制
print(dir(list))
代码语言:javascript
复制
['__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 -- 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等。

在列表的末尾追加元素。

代码语言:javascript
复制
list1 = ['Python', 'C++', 'Java']

# 追加元素
list1.append('PHP')
print(list1)

#追加元组,整个元组被当成一个元素
t = ('JavaScript', 'C#', 'Go')
list1.append(t)
print(list1)

#追加列表,整个列表被当成一个元素
list1.append(['Ruby', 'SQL'])
print(list1)
代码语言:javascript
复制
['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() 不会把列表或元组视为一个整体,而是把它们包含的元素逐个添加到列表中。

代码语言:javascript
复制
list2 = ['Python', 'C++', 'Java']

# 追加元素
list2.extend('C')
print(list2)

# 追加元组,元祖被拆分成多个元素
t = ('JavaScript', 'C#', 'Go')
list2.extend(t)
print(list2)

# 追加列表,列表被拆分成多个元素
list2.extend(['Ruby', 'SQL'])
print(list2)
代码语言:javascript
复制
['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 -- 要插入列表中的对象。

将指定对象插入列表的指定位置。

代码语言:javascript
复制
list3 = ['Google', 'Runoob', 'Taobao']

list3.insert(1, 'Baidu')
print ('列表插入元素后为 : ', list3)
代码语言:javascript
复制
列表插入元素后为 :  ['Google', 'Baidu', 'Runoob', 'Taobao']
2 clear()、remove()、pop()方法

list.clear()

清空列表,类似于del a[:]

代码语言:javascript
复制
list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list2 = ['Google', 'Runoob', 'Taobao', 'Baidu']

list1.clear()
del list2[:]

print("列表清空后的list1: ", list1)
print("列表清空后的list2: ", list2)
代码语言:javascript
复制
列表清空后的list1:  []
列表清空后的list2:  []

list.remove(obj)

移除列表中某个值的第一个匹配项。

代码语言:javascript
复制
list1 = ['Google', 'Baidu', 'Runoob', 'Taobao', 'Baidu']

list1.remove('Taobao')
print ("列表现在为 : ", list1)

list1.remove('Baidu')
print ("列表现在为 : ", list1)
代码语言:javascript
复制
列表现在为 :  ['Google', 'Baidu', 'Runoob', 'Baidu']
列表现在为 :  ['Google', 'Runoob', 'Baidu']

list.pop([index=-1])

index -- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。

移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

代码语言:javascript
复制
list1 = ['Google', 'Runoob', 'Taobao']

print(list1.pop())
print ("列表现在为 : ", list1, end="\n\n")

print(list1.pop(0))
print ("列表现在为 : ", list1)
代码语言:javascript
复制
Taobao
列表现在为 :  ['Google', 'Runoob']

Google
列表现在为 :  ['Runoob']
3 count()、index()方法

list.count(obj)

统计某个元素在列表中出现的次数。

代码语言:javascript
复制
aList = [123, 'Google', 'Runoob', 'Taobao', 123];

print ("123 元素个数 : ", aList.count(123))
print ("Runoob 元素个数 : ", aList.count('Runoob'))
代码语言:javascript
复制
123 元素个数 :  2
Runoob 元素个数 :  1

list.index(x[, start[, end]])

start -- 可选,查找的起始位置。

end -- 可选,查找的结束位置。

从列表中找出某个值第一个匹配项的索引位置,如果没有找到对象则抛出异常。

代码语言:javascript
复制
list1 = ['Google', 'Runoob', 'Taobao', 'Runoob', 'QQ']

print ('Runoob 索引值为', list1.index('Runoob'))
print ('Runoob 索引值为', list1.index('Runoob',2,4))
代码语言:javascript
复制
Runoob 索引值为 1
Runoob 索引值为 3
4 sort()、reverse()方法

list.sort( key=None, reverse=False)

key -- 指定在进行比较前要在每个列表元素上调用的函数(或其他可调用对象)。

reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

代码语言:javascript
复制
aList = ['Google', 'Runoob', 'Taobao', 'Facebook']

aList.sort()    # 升序排列
print("List : ", aList)
代码语言:javascript
复制
List :  ['Facebook', 'Google', 'Runoob', 'Taobao']
代码语言:javascript
复制
# 获取序列的第二个元素
def take_second(elem):
    return elem[1]

# 列表
list1 = [(2, 2), (3, 4), (4, 1), (1, 3)]

# 指定第二个元素,升序排列
list1.sort(key=take_second)

# 输出类别
print('排序后的列表:', list1)
代码语言:javascript
复制
排序后的列表:[(4, 1), (2, 2), (1, 3), (3, 4)]

对于排序,Python中还有一个 sorted() 内置函数。两者的区别在于,list.sort() 方法会直接修改原列表(并返回 None 以避免混淆),而 sorted() 内置函数会返回一个新的排序后的列表。

代码语言:javascript
复制
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)
代码语言:javascript
复制
排序前:[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
排序后:[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

list.reverse()

对列表的元素进行反向排序。

代码语言:javascript
复制
list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list1.reverse()
print ("列表反向排序后: ", list1)
代码语言:javascript
复制
列表反向排序后:  ['Baidu', 'Taobao', 'Runoob', 'Google']
5 copy()方法

list.copy()

复制列表,类似于 a[:]

注意:list.copy()方法所遵循的拷贝原理,是浅拷贝,也就是说,只拷贝父对象,不会拷贝对象内部的子对象。关于深拷贝和浅拷贝的更多内容,参见文末的延伸阅读[1]。

代码语言:javascript
复制
a = [1, 2, [3, 4], 5, 6]
b = a.copy()

a.append(7)
a[2][1] = 10

print("a = ", a)
print("b = ", b)
代码语言:javascript
复制
a =  [1, 2, [3, 10], 5, 6, 7]
b =  [1, 2, [3, 10], 5, 6]

可以看出,列表a中新增元素,对列表b没有影响;但是如果修改了a中的列表对象,同样也会影响到b。

延伸阅读:

[1] Python: dict字典的方法介绍

参考资料:

[1] Python list列表详解(http://c.biancheng.net/view/4328.html)

[2] Python3 列表(https://www.runoob.com/python3/python3-list.html)

[3] 排序指南(https://docs.python.org/zh-cn/3/howto/sorting.html)

[4] Python List 列表的深浅层复制(https://blog.csdn.net/mooneve/article/details/80156145)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据处理与编程实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 append()、extend()、insert()方法
  • 2 clear()、remove()、pop()方法
  • 3 count()、index()方法
  • 4 sort()、reverse()方法
  • 5 copy()方法
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档