python学习笔记5列表生成式

转载 2016年06月01日 12:58:31

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。

举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))

>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环:

>>> L = []
>>> for x in range(1, 11):
...    L.append(x * x)
...
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。

for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

还可以使用两层循环,可以生成全排列:

>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

三层和三层以上的循环就很少用到了。

运用列表生成式,可以写出非常简洁的代码。例如,列出当前目录下的所有文件和目录名,可以通过一行代码实现:

>>> import os # 导入os模块,模块的概念后面讲到
>>> [d for d in os.listdir('.')] # os.listdir可以列出文件和目录
['.emacs.d', '.ssh', '.Trash', 'Adlm', 'Applications', 'Desktop', 'Documents', 'Downloads', 'Library', 'Movies', 'Music', 'Pictures', 'Public', 'VirtualBox VMs', 'Workspace', 'XCode']

for循环其实可以同时使用两个甚至多个变量,比如dictitems()可以同时迭代key和value:

>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> for k, v in d.items():
...     print(k, '=', v)
...
y = B
x = A
z = C

因此,列表生成式也可以使用两个变量来生成list:

>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> [k + '=' + v for k, v in d.items()]
['y=B', 'x=A', 'z=C']

最后把一个list中所有的字符串变成小写:

>>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']

『Python』序列学习总结之五 ——列表推导式的一些应用

最近在工作中为了减少代码的行数而开始使用列表推导式, 结果非常好, 七八行的代码只需要用一行代码就能够写完, 虽然逻辑对于不怎么使用列表推导式的人来说会比较困难, 但是习惯之后也相当容易。 因此强烈推...
  • Sbtgmz
  • Sbtgmz
  • 2016年04月29日 17:54
  • 1385

Python:列表生成式

列表生成式,是Python内置的一种极其强大的生成list的表达式。 如果要生成一个list [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9] 可以用 range(1 , 10...
  • ccssddnnbbookkee
  • ccssddnnbbookkee
  • 2015年07月21日 09:35
  • 780

python 生成器、列表/字典/集合解析式区别

一、列表解析列表解析也叫列表推导式,是python编程中常用到的语法糖。列表推导是一个将一个列表(实际上是任意可迭代对象)转换成另一个列表的工具。在转换时,每个元素都可以按照某个条件被包含在新的列表中...
  • luckytanggu
  • luckytanggu
  • 2016年11月14日 00:35
  • 1382

Python学习笔记 - 列表生成式listComprehensions

#!/usr/bin/env python3 # -*- coding: utf-8 -*- list(range(1, 11)) # 生成1乘1,2乘2...10乘10 L = [] for x...
  • zyq522376829
  • zyq522376829
  • 2015年06月29日 21:45
  • 737

python学习笔记 迭代和列表生成式

如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration) 只要是可迭代对象,无论有无下标,都可以迭代,比如dict就...
  • littlecushion000
  • littlecushion000
  • 2016年10月31日 12:57
  • 118

【Python】学习笔记——-4.3、列表生成式

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。 举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, ...
  • singit
  • singit
  • 2017年02月12日 22:18
  • 239

python学习笔记,列表生成式,生成器

列表生成式: 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。 举个例子,要生成list [1, 2, 3, 4, 5, ...
  • qq_27605099
  • qq_27605099
  • 2017年01月24日 21:06
  • 747

Python的列表推导式

列表推导式是Python基础,好用,而又非常重要的功能,也是最受欢迎的Python特性之一,可以说掌握它是成为合格Python程序员的基本标准。本质上可以把列表推导式理解成一种集合了变换和筛选功能的函...
  • saltriver
  • saltriver
  • 2016年08月12日 20:07
  • 2316

Python学习-列表生成式

#coding=UTF-8 import os #要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)): L=list (ran...
  • weixin_39909877
  • weixin_39909877
  • 2017年12月25日 11:52
  • 18

python学习——列表生成式

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。 举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, ...
  • youzhouliu
  • youzhouliu
  • 2016年07月10日 10:31
  • 271
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python学习笔记5列表生成式
举报原因:
原因补充:

(最多只允许输入30个字)