专栏首页JetpropelledSnakePython面试题之列表推导式

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(10))
[0,1,2,3,4,5,6,7,8,9]

这么写没毛病,但是如果要稍微复杂一点的需求可能就有点棘手了,比如

把列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]中的每个元素都加100,生成一个新列表,这要怎么写呢?

一级学徒可能会这么写:

>>>list1 = [0,1,2,3,4,5,6,7,8,9]
>>>list2 = []
>>>for i in list1:
...        list2.append(i+100)
...
>>>list2
[100,101,102,103,104,105,106,107,108,109]

二级学徒可能会这么写:

>>>list2 = list(map(lambda x:x+100,list1))
>>>list2
[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]

注意: 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']

注意:使用列表推导式生成的列表虽然十分方便,但是它生成的列表的所有元素会直接在内存中生成,当你要生成的列表元素个数十分巨大的时候,要注意小心你的内存。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python面试题目之列表取值超出范围

    Jetpropelledsnake21
  • 前端学习笔记之CSS后代选择器、子元素选择器、相邻兄弟选择器区别与详解

    派生选择器用的很多,派生选择器具体包括为后代选择器、子元素选择器、相邻兄弟选择器,我们来理解一下他们之间的具体用法与区别。

    Jetpropelledsnake21
  • Web前端学习笔记之BootStrap

    Bootstrap是Twitter开源的基于HTML、CSS、JavaScript的前端框架。

    Jetpropelledsnake21
  • Python列表常见操作和注意

    py3study
  • spring boot 默认静态文件位置及动态文件位置

    spring boot项目只有src目录,没有webapp目录,会将静态访问(html/图片等)映射到其自动配置的静态目录,如下

    凯哥Java
  • Spring Boot源码编译

    我fork一个Spring boot到自己的github上,主要是为了把阅读源码时添加的一些注释push上去,所以这一步是可选的。

    DH镔
  • Python 列表、元组、字典及集合操作

    注意:当索引超出范围时,Python会报一个IndexError错误,所以,要确保索引不要越界,记得最后一个元素的索引是len(list1) - 1。

    py3study
  • LTE参数-PA/PB总结

    LTE系统中可以配置RS功率、PDSCH功率,以达到优化性能、降低干扰的目的:

    用户6184845
  • 腾讯游戏下一代运维体系”蓝鲸“深入解密

    随着手游市场的快速爆发,如何保障游戏业务高速稳定的发展成为各大游戏公司的头等大事。继7月GOT游戏技术运营论坛后,腾讯大讲堂再次与腾讯游戏运营部合作在上海举办游...

    腾讯大讲堂
  • Python读取Excel文件并写入数据库

    <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: bre...

    Python之道

扫码关注云+社区

领取腾讯云代金券