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 ...
随机推荐
- k8s滚动升级
为了服务升级过程中提供可持续的不中断的服务,Kubernetes 提供了rolling update机制,具体配置需要修改对应服务的yaml文件 参数解析: minReadySeconds: 100 ...
- Spring Security OAuth2 源码分析
Spring Security OAuth2 主要两部分功能:1.生成token,2.验证token,最大概的流程进行了一次梳理 1.Server端生成token (post /oauth/token ...
- Linux下查看mysql路径
ps -ef|grep mysql
- Hadoop伪分布安装详解(三)
目录: 1.修改主机名和用户名 2.配置静态IP地址 3.配置SSH无密码连接 4.安装JDK1.7 5.配置Hadoop 6.安装Mysql 7.安装Hive 8.安装Hbase 9.安装Sqoop ...
- Windows的445端口(文件共享)
周鸿祎:教育网大量电脑445端口暴露,导致中招_科技_腾讯网 http://tech.qq.com/a/20170513/016133.htm 互联网周鸿祎2017-05-13 12:04 据36 ...
- $obj->0
w对象 数组 分别对内存的 消耗 CI result() This method returns the query result as an array of objects, or an empt ...
- python celery rabbitmq--- pypi image from ustc
https://lug.ustc.edu.cn/wiki/mirrors/help/pypi 那么为啥要用celery ?(http://xiaorui.cc/2014/11/16/celery-ra ...
- 适配器模式(Adapter Pattern)--不兼容结果的协调
定义:将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper); 分类: 对象适配器:适配器与适配者之间是关联关系; 类适配器:适配器和适配者之间是继承 ...
- UVA11426 GCD - Extreme (II)---欧拉函数的运用
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 饭卡---hdu2546(01背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 这是一个变形的01背包问题,首先如果金额小于5元,剩余金额不变,为已有金额.如果大于等于5元 我 ...