Python面试题之列表推导式
题目要求:
生成如下列表
[[0,0,0,0,0,],[0,1,2,3,4,],[0,2,4,6,8,],[0,3,6,9,12,]]
(考察列表生成式和基本逻辑推理)
方法1:
list1 = []
for in range(4):
temp = []
for j in range(5):
temp.append(j*i)
list1.append(temp) print(list1)
方法2:
list1 =[[ i*j for j in range(5)] for i in range(4)]
print(list1)
Python列表推导式介绍
列表推导式是Python中快速创建列表的一种方式。
之前我们要创建(Python3中)一个元素是0~9的列表,我们可能会像下面这么写:
>>>list(range())
[,,,,,,,,,]
这么写没毛病,但是如果要稍微复杂一点的需求可能就有点棘手了,比如
把列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
中的每个元素都加100,生成一个新列表,这要怎么写呢?
一级学徒可能会这么写:
>>>list1 = [,,,,,,,,,]
>>>list2 = []
>>>for i in list1:
... list2.append(i+)
...
>>>list2
[,,,,,,,,,]
二级学徒可能会这么写:
>>>list2 = list(map(lambda x:x+,list1))
>>>list2
[, , , , , , , , , ]
注意: Python3中map函数返回的是一个迭代器,需要转成list类型。更多详情请阅读我之前的关于map函数的文章。
高级学徒可能会这么写:
>>>list2 = [i+100 for i in list1]
>>>listt2
[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]
好啦,这第三种写法就是今天我们要讲的列表推导式。
接下来我们看一下,列表推导式的语法规范是什么,看下图:
列表推导式案例
1. 只有输出表达式和输入序列的基本列表推导式
>>>list1 = [1,2,3]
>>>[x*10 for x in list1]
[10,20,30]
2. 带有条件判断的列表推导式
>>>list1 = [1,2,3]
>>>[x*10 for x in list1 if x%2!=0] #把list1中的奇数乘以10
[10,30]
3.多个输入序列的列表推导式
list1 = ["A","B","C"]
list2 = ["X","Y","Z"]
>>>[x+y for x in list1 for y in list2]
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
注意:使用列表推导式生成的列表虽然十分方便,但是它生成的列表的所有元素会直接在内存中生成,当你要生成的列表元素个数十分巨大的时候,要注意小心你的内存。
Python面试题之列表推导式的更多相关文章
- python之生成器(~函数,列表推导式,生成器表达式)
一.生成器 概念:生成器的是实质就是迭代器 1.生成器的贴点和迭代器一样,取值方式也和迭代器一样. 2.生成器一般由生成器函数或者声称其表达式来创建,生成器其实就是手写的迭代器. 3.在python中 ...
- python之生成器和列表推导式
一.生成器函数 1.生成器 就是自己用python代码写的迭代器,生成器的本质就是迭代器(所以自带了__iter__方法和__next__方法,不需要我们去实现). 2.构建生成器的两种方式 1,生成 ...
- 《Python》 生成器和列表推导式
一.初识生成器: 生成器就是自己用Python代码写的迭代器,生成器的本质就是迭代器. 1.Python中提供的生成器: 1.生成器函数: 使用yield语句而不是return语句返回结果.yield ...
- python高级编程之列表推导式
1. 一个简单的例子 在Python中,如果我们想修改列表中所有元素的值,可以使用 for 循环语句来实现. 例如,将一个列表中的每个元素都替换为它的平方: >>> L = [1, ...
- Python三元表达式,列表推导式,字典生成式
目录 1. 三元表达式 2. 列表推导式 3. 字典生成式 3.1 字典生成式 3.2 zip()方法 1. 三元表达式 """ 条件成立时的返回值 if 条件 else ...
- Python(2.7.6) 列表推导式
列表推导式是利用已有的列表导出新的列表,它的工作方式类似于 for 循环. 例如,有一个列表,现在想得到一个对应的列表,使得每个元素是原有列表中元素的平方: >>> [x ** 2 ...
- python 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
http://www.cnblogs.com/linhaifeng/articles/7580830.html 三元表达式.列表推导式.生成器表达式.递归.匿名函数.内置函数
- Python基础8:列表推导式(list)字典推导式(dict) 集合推导式(set)
推导式分为列表推导式(list),字典推导式(dict),集合推导式(set)三种 1.列表推导式也叫列表解析式.功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表格式:用中括号括起 ...
- python练习笔记——用列表推导式生成二维列表
用列表推导式如何生成如下列表:[[1, 2, 3], [4, 5, 6], [7, 8, 9]] inner_list = [] outer_list = [] for i in range(1,10 ...
随机推荐
- 关于python类型创建、反射(自醒)与反序列化
一.反序列化漏洞与新式类 在pickle和cPickle以及shelve这三个序列化类中,想要构造反序列化漏洞执行命令或者代码,都需要用到新式类. shelve其实底层就是调用的pickle和cPic ...
- 【BZOJ4518】[Sdoi2016]征途 斜率优化
[BZOJ4518][Sdoi2016]征途 Description Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地.除 ...
- 160323、理解Java虚拟机体系结构
今天看到一篇文章,觉得写得不错,特拿来跟大家分享一下 1 概述 众所周知,Java支持平台无关性.安全性和网络移动性.而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一 ...
- jquery的强大选择器
$("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 $("di ...
- Apache Samza - Reliable Stream Processing atop Apache Kafka and Hadoop YARN
http://engineering.linkedin.com/data-streams/apache-samza-linkedins-real-time-stream-processing-fram ...
- python学习笔记(四)— 函数
一.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pasc ...
- 1.1 - python基础语法 - 总结练习题
1.编译型与解释型语言的区别,哪些属于编译型,哪些属于解释型 编译型:c/c++/go 运行速度快,开发效率低,不可跨平台 解释型:python/java/php/ruby 运行速度低,开发效率高,可 ...
- Ubentu下安装Docker
具体可以查看Docker官网,我是在服务器上面操作 1,sudo apt-get install -y apt-transport-https ca-certificates curl softwar ...
- MySQL协议分析(1)
MySQL协议分析 此阶段的协议分析是在未压缩未加密情况下的协议分析 思路: 结合Oracle官网和自己用wireshark抓的网络数据包进行协议分析 官网说明 mysql包共分为4段,格式如下: 第 ...
- docker镜像上传到阿里云
目前上传本地镜像到网上有多种途径,一个是上传到hub上,一个是阿里云镜像仓库,还要其他服务器. 上传到hub上实在是太慢了,我的服务器用的是阿里云,所以选择上传到阿里云镜像仓库中. 前提条件:linu ...