关于 Python 列表操作,最常见问答Top10
列表是最常用的数据类型之一,本文整理了 StackOverflow 上关于列表操作被访问最多的10个问答,如果你在开发过程中遇到这些问题,不妨先思考一下如何解决。
1、迭代列表时如何访问列表下标索引
普通版:
items = [8, 23, 45]
for index in range(len(items)):print(index, "-->", items[index])>>>
0 --> 8
1 --> 23
2 --> 45复制代码
优雅版:
for index, item in enumerate(items):print(index, "-->", item)>>>
0 --> 8
1 --> 23
2 --> 45复制代码
enumerate
还可以指定元素的第一个元素从几开始,默认是0,也可以指定从1开始:
for index, item in enumerate(items, start=1):print(index, "-->", item)>>>
1 --> 8
2 --> 23
3 --> 45复制代码
2、append 与 extend 方法有什么区别
append
表示把某个数据当做新元素追加到列表的最后面,它的参数可以是任意对象
x = [1, 2, 3]
y = [4, 5]
x.append(y)
print(x)>>>
[1, 2, 3, [4, 5]]复制代码
extend
的参数必须是一个可迭代对象,表示把该对象里面的所有元素逐个地追加到列表的后面
x = [1, 2, 3]
y = [4, 5]
x.extend(y)
print(x)>>>
[1, 2, 3, 4, 5]# 等价于:
for i in y:x.append(i)复制代码
3、检查列表是否为空
普通版:
if len(items) == 0:print("空列表")或者if items == []:print("空列表")复制代码
优雅版:
if not items:print("空列表")复制代码
4、如何理解切片
切片用于获取列表中指定范的子集,语法非常简单
items[start:end:step]复制代码
从 start 到 end-1 位置之间的元素。step 表示步长,默认为1,表示连续获取,如果 step 为 2 就表示每隔一个元素获取。
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> a[3:8] # 第3到第8位置之间的元素
[4, 5, 6, 7, 8]>>> a[3:8:2] # 第3到第8位置之间的元素,每隔一个元素获取
[4, 6, 8]>>> a[:5] # 省略start表示从第0个元素开始
[1, 2, 3, 4, 5]>>> a[3:] # 省略end表示到最后一个元素
[4, 5, 6, 7, 8, 9, 10]>>> a[::] # 都省略相当于拷贝一个列表,这种拷贝属于浅拷贝
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]复制代码
5、如何拷贝一个列表对象
第一种方法:
new_list = old_list[:]复制代码
第二种方法:
new_list = list(old_list)复制代码
第三种方法:
import copy
# 浅拷贝
new_list = copy.copy(old_list)
# 深拷贝
new_list = copy.deepcopy(old_list)复制代码
6、如何获取列表中的最后一个元素
索引列表中的元素不仅支持正数还支持负数,正数表示从列表的左边开始索引,负数表示从列表的右边开始索引,获取最后一个元素有两种方法。
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a[len(a)-1]
10
>>> a[-1]
10复制代码
7、如何对列表进行排序
列表排序有两种方式,一种是列表自带的方式 sort
,一种是内建函数 sorted
。复杂的数据类型可通过指定 key
参数进行排序。由字典构成的列表,根据字典元素中的age字段进行排序:
items = [{'name': 'Homer', 'age': 39},{'name': 'Bart', 'age': 10},{"name": 'cater', 'age': 20}]items.sort(key=lambda item: item.get("age"))print(items)>>>
[{'age': 10, 'name': 'Bart'}, {'age': 20, 'name': 'cater'}, {'age': 39, 'name': 'Homer'}]复制代码
列表有 sort
方法,用于对原列表进行重新排序,指定 key 参数,key 是匿名函数,item 是列表中的字典元素,我们根据字典中的age进行排序,默认是按升序排列,指定 reverse=True 按降序排列
items.sort(key=lambda item: item.get("age"), reverse=True)>>>
[{'name': 'Homer', 'age': 39}, {'name': 'cater', 'age': 20}, {'name': 'Bart', 'age': 10}]复制代码
如果不希望改变原列表,而是生成一个新的有序列表对象,那么可以内置函数 sorted ,该函数返回新列表
items = [{'name': 'Homer', 'age': 39},{'name': 'Bart', 'age': 10},{"name": 'cater', 'age': 20}]new_items = sorted(items, key=lambda item: item.get("age"))print(items)
>>>
[{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}, {'name': 'cater', 'age': 20}]print(new_items)
>>>
[{'name': 'Bart', 'age': 10}, {'name': 'cater', 'age': 20}, {'name': 'Homer', 'age': 39}]复制代码
8、如何移除列表中的元素
删除列表中的元素有三种方式
remove 移除某个元素,而且只能移除第一次出现的元素
>>> a = [0, 2, 2, 3]
>>> a.remove(2)
>>> a
[0, 2, 3]# 如果要移除的元素不在列表中,则抛出 ValueError 异常
>>> a.remove(7)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list·复制代码
del 根据指定的位置移除某元素
>>> a = [3, 2, 2, 1]
# 移除第一个元素
>>> del a[1]
[3, 2, 1]# 当超出列表的下表索引时,抛出IndexError的异常
>>> del a[7]
Traceback (most recent call last):File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range复制代码
pop 与del 类似,但是 pop 方法可以返回移除的元素
>>> a = [4, 3, 5]
>>> a.pop(1)
3
>>> a
[4, 5]# 同样,当超出列表的下表索引时,抛出IndexError的异常
>>> a.pop(7)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
IndexError: pop index out of range复制代码
9、如何连接两个列表
listone = [1, 2, 3]
listtwo = [4, 5, 6]mergedlist = listone + listtwoprint(mergelist)
>>>
[1, 2, 3, 4, 5, 6]复制代码
列表实现了 +
的运算符重载,使得 +
不仅支持数值相加,还支持两个列表相加,只要你实现了 对象的 __add__
操作,任何对象都可以实现 +
操作,例如:
class User(object):def __init__(self, age):self.age = agedef __repr__(self):return 'User(%d)' % self.agedef __add__(self, other):age = self.age + other.agereturn User(age)user_a = User(10)
user_b = User(20)c = user_a + user_bprint(c)>>>
User(30)复制代码
10、如何随机获取列表中的某个元素
import random
items = [8, 23, 45, 12, 78]>>> random.choice(items)
78
>>> random.choice(items)
45
>>> random.choice(items)
12复制代码
同步发布于:foofish.net/python-list…
关于 Python 列表操作,最常见问答Top10相关推荐
- python 代码命令大全-Python列表操作大全(非常全)
Python列表操作大全(非常全!!!) 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且 ...
- python列表第几个怎么表示-Python列表操作大全(非常全)
Python列表操作大全(非常全!!!) 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且 ...
- python列表操作:追加元素到列表的代码
将做工程过程中常用的内容做个收藏,如下的内容是关于python列表操作:追加元素到列表的内容. scores = ["1","2","3"] ...
- 【Python基础】零基础学习Python列表操作
作者:来自读者投稿 整理:Lemon 出品:Python数据之道 " 「Python数据之道」导读:本文来自读者投稿,Python数据之道早些时候也发过 Python 列表相关的文章,可以前 ...
- [转载] Python列表操作
参考链接: Python中的基本运算符 Python列表: 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推: Py ...
- python列表操作计算列表长度并输出,python列表 (list)
python列表 (list) python的列表(list)是使用频率最高的一种数据结构, 很像C++中的vector 和 java 中的ArrayList, 是大小可动态变换的数组. 单个列表可以 ...
- python列表操作函数大全_Python列表操作函数
列表可以进行多个数据的存储,同时python中的列表设计非常到位,它可以实现内容动态扩充,可以进行后期数据的删除,这些就需要通过Python提供的列表操作函数来实现了. 对于Python语言而言,开发 ...
- python n个list如何组成矩阵_通过学习在processing中操作图片,掌握python 列表操作...
这次的教学非常简单,只需要安装了python模式的processing就可以(安装教程见专栏目录).我从网上找了一个比100*100稍微大一点的图片,你可以也找一个.然后我们就可以一起开始今天的学习啦 ...
- python 列表操作详解,Python列表解析操作实例总结
本文实例讲述了Python列表解析操作.分享给大家供大家参考,具体如下: 列表解析 Python 的强大特性之一是其对 list 的解析,它提供一种紧凑的方法,可以通过对 list 中的每个元素应用一 ...
最新文章
- 我都不敢信了 东芝芯片“又”将最后决定
- 【笔记】MySQL的基础学习(二)
- Linux 编译pe,如何在PE中将PE(可移植可执行文件)格式转换为ELF
- cesium3dtiles位置改变
- 安装windows和android双系统,安装Windows和Android双系统.doc
- html 放上去动画停止,使用jQuery的animate()+CSS样式实现动画效果及stop()停止动画
- 无线电射频能量的收集
- Servlet 身份验证体系结构
- 基于SpringBoot的毕业设计选题系统
- java斜体_设置标签字体用粗体和斜体
- 全文检索Elasticsearch研究
- Linux系统忘记密码解决办法
- x86 版的 Arduino Intel Galileo 开发板的体验、分析和应用
- JavaSE最新版(二)面向对象、String类、ArrayList
- 大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块
- YzmCMS 5.2.X 文章发布模块及使用说明
- 乐华v56与v59的区别_乐华V59-5键通用程序(通用板)驱动程序
- 中职计算机课题研究题目参考,中职课题研究题目参考
- 百度输入法皮肤工具提示 CSS,【图片】【教程】百度手机输入法皮肤模板的制作_百度手机输入法吧_百度贴吧...
- ntp时间服务器和ssh免密登录