列表是最常用的数据类型之一,本文整理了 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之禅

关于 Python 列表操作,最常见问答Top10相关推荐

  1. python 代码命令大全-Python列表操作大全(非常全)

    Python列表操作大全(非常全!!!) 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且 ...

  2. python列表第几个怎么表示-Python列表操作大全(非常全)

    Python列表操作大全(非常全!!!) 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且 ...

  3. python列表操作:追加元素到列表的代码

    将做工程过程中常用的内容做个收藏,如下的内容是关于python列表操作:追加元素到列表的内容. scores = ["1","2","3"] ...

  4. 【Python基础】零基础学习Python列表操作

    作者:来自读者投稿 整理:Lemon 出品:Python数据之道 " 「Python数据之道」导读:本文来自读者投稿,Python数据之道早些时候也发过 Python 列表相关的文章,可以前 ...

  5. [转载] Python列表操作

    参考链接: Python中的基本运算符 Python列表: 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推: Py ...

  6. python列表操作计算列表长度并输出,python列表 (list)

    python列表 (list) python的列表(list)是使用频率最高的一种数据结构, 很像C++中的vector 和 java 中的ArrayList, 是大小可动态变换的数组. 单个列表可以 ...

  7. python列表操作函数大全_Python列表操作函数

    列表可以进行多个数据的存储,同时python中的列表设计非常到位,它可以实现内容动态扩充,可以进行后期数据的删除,这些就需要通过Python提供的列表操作函数来实现了. 对于Python语言而言,开发 ...

  8. python n个list如何组成矩阵_通过学习在processing中操作图片,掌握python 列表操作...

    这次的教学非常简单,只需要安装了python模式的processing就可以(安装教程见专栏目录).我从网上找了一个比100*100稍微大一点的图片,你可以也找一个.然后我们就可以一起开始今天的学习啦 ...

  9. python 列表操作详解,Python列表解析操作实例总结

    本文实例讲述了Python列表解析操作.分享给大家供大家参考,具体如下: 列表解析 Python 的强大特性之一是其对 list 的解析,它提供一种紧凑的方法,可以通过对 list 中的每个元素应用一 ...

最新文章

  1. 我都不敢信了 东芝芯片“又”将最后决定
  2. 【笔记】MySQL的基础学习(二)
  3. Linux 编译pe,如何在PE中将PE(可移植可执行文件)格式转换为ELF
  4. cesium3dtiles位置改变
  5. 安装windows和android双系统,安装Windows和Android双系统.doc
  6. html 放上去动画停止,使用jQuery的animate()+CSS样式实现动画效果及stop()停止动画
  7. 无线电射频能量的收集
  8. Servlet 身份验证体系结构
  9. 基于SpringBoot的毕业设计选题系统
  10. java斜体_设置标签字体用粗体和斜体
  11. 全文检索Elasticsearch研究
  12. Linux系统忘记密码解决办法
  13. x86 版的 Arduino Intel Galileo 开发板的体验、分析和应用
  14. JavaSE最新版(二)面向对象、String类、ArrayList
  15. 大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块
  16. YzmCMS 5.2.X 文章发布模块及使用说明
  17. 乐华v56与v59的区别_乐华V59-5键通用程序(通用板)驱动程序
  18. 中职计算机课题研究题目参考,中职课题研究题目参考
  19. 百度输入法皮肤工具提示 CSS,【图片】【教程】百度手机输入法皮肤模板的制作_百度手机输入法吧_百度贴吧...
  20. ntp时间服务器和ssh免密登录

热门文章

  1. 生成osm文件_超酷城市肌理!地理数据信息爬取方法大全(B篇)DEM+POI+OSM
  2. 复数域上x^n ±1=0的解
  3. ibatis与spring的整合
  4. 简单选择排序--转载
  5. 分布式项目 cookie共享方案
  6. 第13次预习课-20180919 多进程编程
  7. Python列表的生成
  8. Leetcode-53 Maximum Subarray
  9. c# 过滤HTML代码 源代码,案例 下载
  10. 培训是一种乐趣(3)