一、基础

1.常用方法:【'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'这些方法,下面进行讲解】

1)append在列表的最后添加,如果为可迭代元素,则可迭代元素作为整体添加到列表

2)extend在列表的最后添加;如果为可迭代元素, 则把可迭代元素分开添加到列表

3)默认删除列表中的最后一个元素pop,也可以根据元素的位置删除列表元素

4)remove根据列表值的内容删除某个列表元素

5)reverse反转列表

6)给列表排序sort

二、进阶

1、判断一个 list 是否为空

传统的方式:

if len(mylist):# Do something with my list
else:# The list is empty

由于一个空 list 本身等同于 False,所以可以直接:

if mylist:# Do something with my list
else:# The list is empty

2、遍历 list 的同时获取索引

传统的方式:

i = 0
for element in mylist:# Do something with i and elementi += 1

这样更简洁些:Python提供了一个内置的enumerate函数,可以把一个list变成索引-元素对,这样就可以做到在for循环中迭代索引和元素本身。

for i, element in enumerate(mylist):# Do something with i and elementpass

3、list 排序

在包含某元素的列表中依据某个属性排序是一个很常见的操作。例如这里我们先创建一个包含 person 的 list:

class Person(object):def __init__(self, age):self.age = agepersons = [Person(age) for age in (14, 78, 42)]

传统的方式是:

def get_sort_key(element):return element.agefor element in sorted(persons, key=get_sort_key):print "Age:", element.age

更加简洁、可读性更好的方法是使用 Python 标准库中的 operator 模块:

from operator import attrgetterfor element in sorted(persons, key=attrgetter('age')):print "Age:", element.age

attrgetter 方法优先返回读取的属性值作为参数传递给 sorted 方法。operator 模块还包括 itemgetter 和 methodcaller 方法,作用如其字面含义。

4、list解析

python有一个非常有意思的功能,就是list解析,就是这样的:

>>> squares = [x**2 for x in range(1,10)]
>>> squares
[1, 4, 9, 16, 25, 36, 49, 64, 81]

看到这个结果,看官还不惊叹吗?这就是python,追求简洁优雅的python!

其官方文档中有这样一段描述,道出了list解析的真谛:

List comprehensions provide a concise way to create lists. Common applications are to make new lists where each element is the result of some operations applied to each member of another sequence or iterable, or to create a subsequence of those elements that satisfy a certain condition.

还记得前面一讲中的那个问题吗?

找出100以内的能够被3整除的正整数。

我们用的方法是:

aliquot = []for n in range(1,100):if n%3 == 0:aliquot.append(n)print aliquot

好了。现在用list解析重写,会是这样的:

>>> aliquot = [n for n in range(1,100) if n%3==0]
>>> aliquot
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]

震撼了。绝对牛X!

其实,不仅仅对数字组成的list,所有的都可以如此操作。请在平复了激动的心之后,默默地看下面的代码,感悟一下list解析的魅力。

>>> mybag = [' glass',' apple','green leaf ']  #有的前面有空格,有的后面有空格
>>> [one.strip() for one in mybag]       #去掉元素前后的空格
['glass', 'apple', 'green leaf']

5、enumerate

这是一个有意思的内置函数,本来我们可以通过for i in range(len(list))的方式得到一个list的每个元素编号,然后在用list[i]的方式得到该元素。如果要同时得到元素编号和元素怎么办?就是这样了:

>>> for i in range(len(week)):
...   print week[i]+' is '+str(i)   #注意,i是int类型,如果和前面的用+连接,必须是str类型
...
monday is 0
sunday is 1
friday is 2

python中提供了一个内置函数enumerate,能够实现类似的功能

>>> for (i,day) in enumerate(week):
...   print day+' is '+str(i)
...
monday is 0
sunday is 1
friday is 2

算是一个有意思的内置函数了,主要是提供一个简单快捷的方法。

官方文档是这么说的:

Return an enumerate object. sequence must be a sequence, an iterator, or some other object which supports iteration. The next() method of the iterator returned by enumerate() returns a tuple containing a count (from start which defaults to 0) and the values obtained from iterating over sequence:

顺便抄录几个例子,供看官欣赏,最好实验一下。

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

Python之列表list模块相关推荐

  1. Python标准库threading模块Condition原理浅析

    Python标准库threading模块Condition原理浅析 本文环境python3.5.2 threading模块Condition的实现思路 在Python的多线程实现过程中,在Linux平 ...

  2. Python标准库asyncio模块基本原理浅析

    Python标准库asyncio模块基本原理浅析 本文环境python3.7.0 asyncio模块的实现思路 当前编程语言都开始在语言层面上,开始简化对异步程序的编程过程,其中Python中也开始了 ...

  3. python之堆heapq模块

    python之堆heapq模块 堆是一种特殊的树形结构,通常我们所说的堆的数据结构指的是完全二叉树,并且根节点的值小于等于该节点所有子节点的值. 堆是非线性的树形的数据结构,有两种堆,最大堆与最小堆. ...

  4. Python爬虫之urllib模块2

    Python爬虫之urllib模块2 本文来自网友投稿 作者:PG-55,一个待毕业待就业的二流大学生. 看了一下上一节的反馈,有些同学认为这个没什么意义,也有的同学觉得太简单,关于Beautiful ...

  5. 对于python来说、一个模块就是一个文件-PYTHON中的包和模块

    为了更加友好的对python代码进行组织管理,python中出现了包和模块的概念 类似生活中整理我们的物品一样,将代码按照不同的功能进行整理整合,可以很大程度的提升代码可读性和代码质量,方便在项目中进 ...

  6. python怎么读取列表-python读入列表

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 我正在尝试将文本文件的行读入python中的列表或数组. 我只需要能够单 ...

  7. python常用内置模块-Python内置模块和第三方模块

    Python的强大之处在于他有非常丰富和强大的标准库和第三方库(模块),几乎你想实现的任何功能都有相应的Python库支持,就类似于C#中的类库亦或JAVA的jar包,前端中的JS库. 使用模块有什么 ...

  8. python 的标准库模块glob使用教程,主要为glob.glob()使用与glob.iglob()使用

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 python 的标准库模块glob使用教程,主要为glob.glob函数使用与glob.iglob函数使用 文章目录: ...

  9. python random模块中的指令_10分钟让你掌握python编程中random模块功能使用,非常详细...

    原标题:10分钟让你掌握python编程中random模块功能使用,非常详细 python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可 ...

最新文章

  1. 构造方法前可以用public修饰吗_程序员,你连反射都不会,还敢说自己会Java吗?...
  2. PLSQL Developer设置及快捷键设置
  3. 南京大学潘天群教授:人类智能发展的宏大叙事
  4. 利用Matlab求解线性规划问题
  5. 【遥感数字图像处理】基础知识:第四章 遥感图像辐射纠正
  6. Springboot之actuator配置不当漏洞RCE(jolokia)
  7. 各种存储分配算法java代码实现_Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF...
  8. poi合并单元格后居中
  9. 背景色透明度影响字体的透明度
  10. 【中医学】8 中药-3
  11. omnet++ tictoc2 实例分析
  12. 小学生数据分析《西游记》发现大BUG
  13. E20-591考试必备资料分享
  14. 苹果手机注册时显示链接服务器出现问题,苹果连接服务器出现问题怎么办_苹果id连接到服务器时出现问题的解决方法...
  15. 【LeetCode力扣】青蛙跳台阶问题,一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
  16. 穷查理宝典-读书笔记
  17. RAID详解+RAID5配置实战
  18. WinInet + MFC 写vc驿站助手
  19. 基于单片机太阳能自动双轴追光电路仿真系统(毕设课设)
  20. 使用PowerDesigner画ER图详细教程

热门文章

  1. AngularJs angular.bind、angular.bootstrap、angular.copy
  2. 【c++】【转】c++中的explicit关键字
  3. 修改Windows远程登录端口号
  4. JavaScript调用服务器事件
  5. 从实例到数理来解析感知机学习算法(PLA)
  6. 【转载】Centos7修改root密码
  7. Nhibernate 基础关系映射
  8. 六、Scrapy中Download Middleware的用法
  9. 中国企业云计算应用现状及需求
  10. vue路由跳转 返回上一级 this.$router.go(-1) 和返回到指定页面this.$router.push('/home')...