python基础——列表推导式

1 列表推导式定义

列表推导式能非常简洁的构造一个新列表:只用一条简洁的表达式即可对得到的元素进行转换变形

2 列表推导式语法

基本格式如下:

[expr for value in collection ifcondition]

过滤条件可有可无,取决于实际应用,只留下表达式

列表推导式例子:

l=["egg%s"%i for i in range(10)]
print(l)

类似于这段for代码:

egg_list=[]
for i in range(10):
egg_list.append("egg%s"%i)
print(egg_list)

  

列表推导式还可以加更多的if判断for循环

l=['egg%s' %i for i in range(1,101)]
l=['egg%s' %i for i in range(1,101) if i >50 ]
l=['egg%s' %i for i in range(1,101) if i >50 if i<60]
print(l)

 

3 列表推导式优点

方便,改变了编程习惯,属于声明式编程

举例:

l=[1,2,3,4]
s="hello"
l1=[(num,i) for num in l for i in s]
print(l1)

输出结果为:  

[(1, 'h'), (1, 'e'), (1, 'l'), (1, 'l'), (1, 'o'), (2, 'h'), (2, 'e'), (2, 'l'), (2, 'l'), 
(2, 'o'), (3, 'h'), (3, 'e'), (3, 'l'), (3, 'l'), (3, 'o'), (4, 'h'), (4, 'e'), (4, 'l'),
(4, 'l'), (4, 'o')]

  

这个列表推导式相当于:

l=[1,2,3,4]
s="hello"
l1=[]
for num in l:
for i in s:
t=(num,i)
l1.append(t)
print(l1)

4 列表表达式例子

import os
g=os.walk("C:\python_fullstack_wen\day24\wen")
file_path_list=[]
for i in g:
for j in i[-1]:
file_path_list.append("%s\\%s"%(i[0],j))
print(file_path_list) g=os.walk("C:\python_fullstack_wen\day24\wen")
file_path_list=["%s\\%s"%(i[0],j) for i in g for j in i[-1]]
print(file_path_list)

输出结果:

['C:\\python_fullstack_wen\\day24\\wen\\yan1.txt', 'C:\\python_fullstack_wen\\day24\\wen\\wen1
\\yan1.txt', 'C:\\python_fullstack_wen\\day24\\wen\\wen1\\jie1\\yan1.txt',
'C:\\python_fullstack_wen\\day24\\wen\\wen1\\yan1\\yan1.txt',
'C:\\python_fullstack_wen\\day24\\wen\\wen2\\yan2.txt']
['C:\\python_fullstack_wen\\day24\\wen\\yan1.txt', 'C:\\python_fullstack_wen\\day24\\wen\\wen1\\yan1.txt', 'C:\\python_fullstack_wen\\day24\\wen\\wen1\\jie1\\yan1.txt', 'C:\\python_fullstack_wen\\day24\\wen\\wen1\\yan1\\yan1.txt', 'C:\\python_fullstack_wen\\day24\\wen\\wen2\\yan2.txt']

python基础——列表推导式的更多相关文章

  1. Python基础-列表推导式

    python中列表推导式有三种数据类型可用:列表,字典,集合 列表推导式书写形式: [表达式 for 变量 in 列表]    或者  [表达式 for 变量 in 列表 if 条件] 1,列表推导式 ...

  2. Python基础-列表推导式、匿名函数、os/sys/time/datetime/pymysql/xlwt/hashlib模块

    列表推导式 [表达式 for 变量 in range(n) if 条件]  等效于 for 变量 in in range(n): if 条件: 表达式 优点:书写方便,缺点:不易读 注意:用的是方括号 ...

  3. python 3列表推导式的的一点理解!

    python 3列表推导式的的一点理解! Python的列表推导式对于新手来说一般都难以理解,简单看个例子: [x * x for x in range(1,100)] 上面是一个很简单的列表推导式, ...

  4. Python的列表推导式

    1.列表推导式书写形式: [表达式 for 变量 in 列表]    或者  [表达式 for 变量 in 列表 if 条件] 2.举例说明: #!/usr/bin/python # -*- codi ...

  5. Python函数——列表推导式、生成器与迭代器

    列表推导式 产生背景 现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,你怎么实现? 第一种方法: a = [1,3,4,6,7,7,8,9 ...

  6. Python之列表推导式

    我们经常需要这样处理一个列表:把一个列表里面的每个元素, 经过相同的处理 ,生成另一个列表. 比如:一个列表1,里面都是数字,我们需要生成一个新的列表B,依次存放列表A中每个元素的平方 怎么办? 当然 ...

  7. python - list 列表推导式

    一.如有两个list,分别为: a = [1,2,3,4,5,6]b = ["a","b","c","d"," ...

  8. Python基础---三大推导式

    推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据结构构建另一个新的数据结构的结构体. 共有三种推导,在Python2和3中都有支持: 列表(lis ...

  9. Python的列表推导式,字典推导式,集合推导式使用方法

    推导式分为列表推导式(list),字典推导式(dict),集合推导式(set)三种 1.列表推导式也叫列表解析式.功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表格式:用中括号括起 ...

随机推荐

  1. 托管ASP.NET Core应用程序到Windows服务中

    由于公司程序前置Nginx反向代理,所以在Windows中部署过程中没有采用IIS托管.Net Core应用,一直采用控制台dotnet命令直接运行.但是测试过程中,发现程序内Session一直无法覆 ...

  2. MySQL异步、同步、半同步复制

    异步复制 MySQL复制默认是异步复制,Master将事件写入binlog,提交事务,自身并不知道slave是否接收是否处理: 缺点:不能保证所有事务都被所有slave接收. 同步复制 Master提 ...

  3. 第一把机械键盘 ikbc C-87

    终于入了机械键盘,ikbc C-87黑色红轴. 原本上周五晚上就到了,但是那个键盘有几个键弹起后弹簧会持续响,敲了一会,实在不能忍受,就申请换货了.新换的键盘今天终于到了,没有了之前的问题,但是几乎每 ...

  4. SpringMVC的工作流程以及组件说明

    1. SpringMVC处理流程 2. SpringMVC架构 2.1 框架结构 2.2 框架流程 1. 用户发送请求至前端控制器DispatcherServlet. 2. DispatcherSer ...

  5. Docker学习笔记(一)

    什么是Docker? 1.基于Go语言开发的云开源项目,Docker的主要目标是通过对应用组件的 封装,分发,部署,运行等生命周期的管理,达到应用组件级别的 一次封装,到处运行. 2.可以将Docke ...

  6. 关于bootstrap的form表单的输入框间距样式

    <!-- 模态弹出窗内容 --> <div class="modal" tabindex="-1" role="dialog&quo ...

  7. nvm配置

    多版本安装方式 卸载已有的Node.js 下载nvm 在C盘创建目录dev 在dev目中中创建两个子目录nvm和nodejs 并且把nvm包解压进去nvm目录中 在install.cmd文件上面右键选 ...

  8. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  9. C#数组随机生成四个随机数

    int[] face = new int[4]; Random ra = new Random(); for (int i = 0; i < face.Length; i++) { int co ...

  10. Linux进程间通信-消息队列(mqueue)

    前面两篇文章分解介绍了匿名管道和命名管道方式的进程间通信,本文将介绍Linux消息队列(posix)的通信机制和特点. 1.消息队列 消息队列的实现分为两种,一种为System V的消息队列,一种是P ...