• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > 在Python中使用列表生成式的教程

在Python中使用列表生成式的教程

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python基础教程视频,python爬虫入门教程,python基础教程,python视频教程,菜鸟教程python等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

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

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

</div>

但如果要生成[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]

</div>

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

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

</div>

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

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

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

</div>

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

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

</div>

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

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

>>> 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']

</div>

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

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

</div>

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

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

</div>

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

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

</div>

小结

运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁。

思考:如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,所以列表生成式会报错:

>>> L = ['Hello', 'World', 18, 'Apple', None]
>>> [s.lower() for s in L]
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'lower'

</div>

使用内建的isinstance函数可以判断一个变量是不是字符串:

>>> x = 'abc'
>>> y = 123
>>> isinstance(x, str)
True
>>> isinstance(y, str)
False

</div>

请修改列表生成式,通过添加if语句保证列表生成式能正确地执行。

</div>

您可能想查找下面的文章:

  • Python 专题四 文件基础知识
  • Python 基础教程之包和类的用法
  • 一张图带我们入门Python基础教程
  • Python基础中所出现的异常报错总结
  • 使用Python编写一个最基础的代码解释器的要点解析
  • Python基础篇之初识Python必看攻略
  • python基础教程之分支、循环简单用法
  • 在Python中使用列表生成式的教程
  • 在Python中使用列表生成式的教程
  • 用Python实现协同过滤的教程

相关文章

  • python爬取51job中hr的邮箱
  • Python的Django框架安装全攻略
  • 详解python中xlrd包的安装与处理Excel表格
  • 初步讲解Python中的元组概念
  • Python NumPy库安装使用笔记
  • Python标准库之多进程(multiprocessing包)介绍
  • python读取注册表中值的方法
  • Python在Windows和在Linux下调用动态链接库的教程
  • Python中使用第三方库xlutils来追加写入Excel文件示例
  • python利用elaphe制作二维条形码实现代码

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 举例详解Python中循环语句的嵌套使用
    • 跟老齐学Python之使用Python查询更新数据库
    • python实现清屏的方法
    • Python中optionParser模块的使用方法实例教程
    • python基于queue和threading实现多线程下载实例
    • python使用正则表达式检测密码强度源码分享
    • 浅谈编码,解码,乱码的问题
    • Python使用BeautifulSoup库解析HTML基本使用教程
    • 尝试用最短的Python代码来实现服务器和代理服务器
    • 用Python的Django框架来制作一个RSS阅读器

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有