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 ...
随机推荐
- Objective-C代码学习大纲(5)
2011-05-11 14:06 佚名 otierney 字号:T | T 本文为台湾出版的<Objective-C学习大纲>的翻译文档,系统介绍了Objective-C代码,很多名词为台 ...
- 170327、Java微信支付中的扫码支付
微信支付现在已经变得越来越流行了,随之也出现了很多以可以快速接入微信支付为噱头的产品,不过方便之余也使得我们做东西慢慢依赖第三方,丧失了独立思考的能力,这次打算分享下我之前开发过的微信支付. 一 H5 ...
- ZOJ 3607 Lazier Salesgirl (枚举)
Lazier Salesgirl Time Limit: 2 Seconds Memory Limit: 65536 KB Kochiya Sanae is a lazy girl who makes ...
- vscode编辑器配置C语言编译运行环境
1.安装C/C++插件 2.安装编译环境,这里选择MinGW(http://mingw.org/ ) 选择一个安装目录,如:E:\workspace\MinGW mingw32-gcc开头的(包括了m ...
- Win10图标显示不正常解决办法
当缓存文件出现问题时,就会引发系统图标显示不正常: 1.由于图标缓存文件是隐藏文件,我们需要在资源管理器中将设置改为“显示所有文件”. 2.同时按下快捷键 Win+R,在打开的运行窗口中输入 %loc ...
- requests设置Authorization
headers = {"Authorization", "Bearer {}".format(token_string)} r = requests.get(& ...
- Zipline Risk and Performance Metrics
Risk and Performance Metrics 风险和性能指标 The risk and performance metrics are summarizing values calcula ...
- centos7手动编译安装Libvirt常见问题
由于功能需要,体验了手动编译安装Libvrt,还是碰到了不少问题,这里总结如下仅限于centos7: 1.configure: error: You must install the pciacces ...
- 解决iOS xcode打包unknown error -1=ffffffffffffffff错误
# 网上很多文档说重启机器,清除缓存什么的,纯属扯淡,都是相互复制粘贴,经测验在stackoverflow找到以下解决方法,亲测可用security unlock-keychain -p " ...
- django views.py视图 获取用户请求相关信息以及请求头
请求的其他信息 用户发来请求时候,不仅发来数据,也把请求头也发过来 在views.py 怎么找请求数据? request是一个对象,这个对象封装很多信息,可以先查这个对象的类 print(type(r ...