列表生成式

主要用于生成较为复杂的列表

常用用法

>>> [x * x for x in range(5) if x % 3 !=1 ]
[0, 4, 9]   #返回除以3余数不为1的数字的平方

两层循环

可以生成全排列:

>>> [m + n for m in '123' for n in 'abc']
['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']

实例

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

>>> os.getcwd()
'D:\\python'
>>> [d for d in os.listdir(os.getcwd())]  #列出当前目录下的文件和目录
['DLLs', 'Doc', 'geckodriver.exe', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'Scripts', 'selenium', 'tcl', 'Tools', 'w9xpopen.exe']

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

>>> for k ,v in a.items():
    print k ,'=' ,v
a = 1
b = 2

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

>>> [k+'='+str(v) for k,v in a.items()]
['a=1', 'b=2']
>>> [k.upper()+'='+str(v) for k,v in a.items() if v != 1]  #加入判断和其他表达式
['B=2']

小结

运用列表生成式,可以快速生成list

【Python】学习笔记之列表生成式的更多相关文章

  1. python学习笔记整理——列表

    Python 文档学习笔记 数据结构--列表 列表的方法 添加 list.append(x) 添加元素 添加一个元素到列表的末尾:相当于a[len(a):] = [x] list.extend(L) ...

  2. python学习笔记-列表和字典

    由于最近在看深度学习的代码,看到需要建立字典和列表来存储什么东西的时候,就想要去把字典和列表好好的了解清楚,其应用范围,差别,等等东西 首先我们来介绍,在python中存在如下的数据结构:列表list ...

  3. Python学习九:列表生成式

    列表生成式,是Python内置的一种极其强大的生成list的表达式. 如果要生成一个list [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9] 可以用 range(1 , 10) ...

  4. python学习道路(day5note)(列表生成式,生成器,装饰器,常用模块)

    生成列表的方式 data = [1,2,3]  需求   每个数字加上1 # data = ( x*2 for x in range(5)) print(data)   列表生成式 后面的I赋予加1操 ...

  5. python学习笔记(列表、元组、购物车实例)

    一.列表 列表和字典是最常用的两种数据类型 1. 需求:怎么存放班级80多人的姓名,如何实现? names = ["Zhangyang","Guyun",&qu ...

  6. Python学习笔记4—列表

    列表定义 >>> a=['] >>> type(a) <type 'list'> >>> bool(a) #列表有值,则为true T ...

  7. python学习笔记之列表与元组

    一.概述 python包含6种内建的序列,其中列表和元组是最常用的两种类型.列表和元组的主要区别在于,列表可以修改,元组则不能修改 使用上,如果要根据要求来添加元素,应当使用列表:而由于要求序列不可修 ...

  8. Python学习笔记(1)-列表

    列表是什么? 列表由一系列按特定顺序排列的元素组成.列表看起来像这样:[1,2,3,4,1].在列表中,可以由零个或多个元素组成,元素之间用逗号分开,具有相同值元素允许出现多次 使用[ ]或list( ...

  9. Python学习笔记_week2_列表、元组、字典、字符串、文件、i编码

    一. 列表.元组 names=["A","B","C","D"] print(names) print(names[0] ...

随机推荐

  1. Linux下多线程的重要知识点

    线程属性: typedef struct { int                              detachstate;   线程的分离状态 int                   ...

  2. tools-eclipse-002-常用插件

    1.spring 查看eclipse版本 下载对应版本插件包Spring Tool Sute 地址:http://spring.io/tools/sts/all 离线包只列举了最新的,如图, 如果ec ...

  3. java 多线程 day08 java5多线程新特性

    /** * Created by chengtao on 17/12/3. */public class Thread0801_java5_Atomaic { /* 三个包: http://tool. ...

  4. windows批处理初学贴出一些命令

    在cmd窗口中复制时,右键选标记,然后再选择此时选择区域就变白了.然后要么直接拖到要粘贴的地方,要么直接按回车存到剪贴板里. 1.循环导入文件夹下面的文件到数据库中 cd /d D:/Program ...

  5. C语言赋初始值

  6. 参数或变量中有语法错误。 服务器响应为: mail from address must be same as authorization user

    企业qq发邮件失败,提示: 参数或变量中有语法错误. 服务器响应为: mail from address must be same as authorization user 解决办法: 登录邮箱,设 ...

  7. JavaScript-dom4 date string 事件绑定

    内置date <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  8. cocos2dx 3.x 精灵重叠时点击最上层的精灵

    ps. 这个方法只适用设置精灵的触摸.. //注册触摸事件..3.X后可以在这样写..不需要重新声明 EventListenerTouchOneByOne *listener = EventListe ...

  9. SpringMVC整合ActiveMQ

    spring activeMq 配置 <!-- ActiveMQ 连接工厂 --> <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服 ...

  10. Vuejs开发环境搭建及热更新

    一.安装NPM 1.1最新稳定版本: npm install vue 二.命令行工具安装 国内速度慢,使用淘宝镜像: npm install -g cnpm --registry=https://re ...