90. Python列表推导式

这篇具有很好参考价值的文章主要介绍了90. Python列表推导式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

90. Python列表推导式

1. 知识回顾

1.1 append函数知识回顾

29.append函数向列表添加元素

append [əˈpend]增加,附加。

【语法】

列表名.append(要增加的元素)

【代码示例】

# 创建列表 name_list
name_list = ['张三']

# 用 append() 给列表 name_list 添加一个元素 '王五'
# 列表名.append(要增加的元素)
name_list.append('王五')

# 输出 name_list 列表
print(name_list)

【终端输出】

['张三', '王五']

1.2 range函数知识回顾

42. range函数—生成器函数

range[reɪndʒ]:按一定的次数排列。

【语法】

range(开始字符,结束字符,步长)

【参数说明】

  1. 参数start:表示起始的整数(包含该整数),如果不指定,则默认为0

  2. 参数end:表示结束的整数(不包含该整数),不能省略。

  3. 参数step:表示步长,即两个数之间的间隔。如果省略,则默认为1,当省略该步长时,最后一个英文逗号也可以省略。

【重点提示】

切片和range函数都包括开始字符,不包括结束字符,简单记忆为含前不含后

【返回值】

range函数返回的是一个range对象。

range函数不能直接生成列表或元组,必需利用list、tuple函数将其转换成列表或元组。

【代码示例】

r1 = range(3)
r2 = range(1,3)
r3 = range(2,8,3)
print("r1的值为:",list(r1))
print("r2的值为:",list(r2))
print("r3的值为:",list(r3))

【终端输出】

r1的值为: [0, 1, 2]
r2的值为: [1, 2]
r3的值为: [2, 5]

1.3 if 条件判断奇偶数

【代码示例】

i = 9
if i%2 ==0 :
    print("i是偶数!")
else:
    print("i是奇数!")

【终端输出】

i是奇数!

【代码示例】

i = 4
if i%2 ==0 :
    print("i是偶数!")
else:
    print("i是奇数!")

【终端输出】

i是偶数!

%表示取余。

一个数除以2的余数为0则该数为偶数,否则为奇数。

2. 课题导入

【目标任务】

创建一个1~5的数字列表。

2.1 直接创建列表

list1= [1, 2, 3, 4, 5]
print(list1)

【终端输出】

[1, 2, 3, 4, 5]

列表用[]表示。

最简单粗暴的方法就是直接用[]创建。

2.2 while循环创建列表

list2 = [ ]   # 新建一个空列表备用
i = 1  #给变量i赋一个初始值1
while i<=5 : # 用i来控制循环次数
    list2.append(i) # 用append函数将i添加到空列表中
    i += 1 # i的累加    
print(list2)

【终端输出】

[1, 2, 3, 4, 5]

这里用while循环创建列表用了6行代码。

2.3 for循环创建列表

list3 = [] # 新建一个空列表备用
for i in range(1, 6): # 创建有规律的数字列表最便捷的方法就是用range函数
    list3.append(i) # 用append函数将i添加到空列表中
print(list3)

【终端输出】

[1, 2, 3, 4, 5]

这里用for循环创建列表用了4行代码。

2.4 用列表推导式创建列表

list4 = [ i for i in range(1,6)]
print(list4)

【终端输出】

[1, 2, 3, 4, 5]

这里用列表推导式创建列表仅用了2行代码。

【总结】

从代码的简洁程度来讲,用列表推导式创建列表最为简单。

3. 什么是列表推导式

【定义】

列表推导式就是利用表达式及已知的列表创建(控制)一个有规律的列表。

已知的列表可以替换成可迭代对象。

【语法】

[表达式 for 迭代变量 in 可迭代对象 if条件表达式]

【表达式分析】

列表推导式主要由4个部分组成。

  1. 英文中括号[]

  2. 表达式。

  3. for循环语句。

  4. if条件表达式。

if 条件表达式不是必须的,根据实际情况可以有也可以没有。

语法中英文中括号中[]的3个部分内容之间用空格间隔。

即表达式后加一个空格,然后跟一个for循环语句,然后再加一个空格,最后再写if条件判断语句。

【列表推导式示例】

list4 = [ i for i in range(1,6)]

【语法如下】

[表达式 for 迭代变量 in 可迭代对象]

第1个i指的是表达式。

for i in range(1,6)是一个for循环语句。

range(1,6)是一个可迭代对象,即定义中的已知列表。

for循环每次迭代都从range(1,6)取出元素,赋值给迭代变量i

然后利用表达式对迭代变量进行变形,生成一个新的列表。

这里的表达式就是迭代变量本身,因此生成的就是由迭代变量组成的新的列表。

4. 列表推导式的作用

列表推导式的作用就是简化代码。

4.1 作用1:变形

计算输出0~5序列的所有数的平方。

list5 = [ i**2 for i in range(1,6)]
print(list5)

【终端输出】

[1, 4, 9, 16, 25]

【定义】

列表推导式就是利用表达式及已知的列表创建(控制)一个有规律的列表。

【解析】

表达式:i**2

已知的列表:range(1,6)

创建的新列表:[1, 4, 9, 16, 25]

【语法如下】

[表达式 for 迭代变量 in 可迭代对象]

【推导式如下】

list5 = [ i**2 for i in range(1,6)]

4.2 作用2:过滤

计算输出10以内的偶数的平方。

list6 = [ i**2 for i in range(1,11) if  i%2==0]
print(list6)

【终端输出】

[4, 16, 36, 64, 100]

【定义】

列表推导式就是利用表达式及已知的列表创建(控制)一个有规律的列表。

【解析】

表达式:i**2

已知的列表:range(1,11)

创建的新列表:[4, 16, 36, 64, 100]

【语法如下】

[表达式 for 迭代变量 in 可迭代对象 if条件表达式]

【推导式如下】

list6 = [ i**2 for i in range(1,11)  if i%2==0]

和之前的代码相比,这里只是多了一个if条件判断语句if i%2==0

5. 实操练习

5.1 输出20以内的奇数

list7 = [ i for i in range(1,21) if i%2!=0]
print(list7)

【终端输出】

[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

【语法解析】

表达式:i

for循环语句:for i in range(1,21)

if条件判断语句:if i%2!=0

已知的列表:range(1,21)

5.2 输出一个整数各个位数上的数字

【输入】

假设这个整数为2468。

【输出】

2 4 6 8

【代码示例】

x = 2468
y = [ int(i) for i in str(x)]
print(y)

【代码解析】

一个整数为2468,我们要依次取出该整数中的每个数字,我先用str函数将整数转换为字符串类型。

用for循环依次遍历该字符串,即可取出该数字中的每个字符,注意得到的是字符串类型。

x = 2468
for i in str(x):
    print(i)
print(type(i))

【终端输出】

2
4
6
8
<class 'str'>

题目要求是要输出数字,因此我们又利用int函数将字符串类型的字符转换为整数。

x = 2468
for i in str(x):
    print(int(i))
print(type(int(i)))

【终端输出】

2
4
6
8
<class 'int'>

这是我们之前掌握的方法,学了列表推导式,我们只需一行代码就可以解决该问题了,如下所示:

x = 2468
y = [ int(i) for i in str(x)]
print(y)

【语法解析】

表达式:int(i)

for循环语句:for i in str(x)

可迭代对象:str(x)

5.3 调整列表顺序

已知一个整数列表,要求调整元素顺序,把列表中的奇数放在列表的前面,偶数放在列表的后面。

【输入】

[1,2,3,4,5,6,7,8]

【输出】

[1,3,5,7,2,4,6,8]

【思路解析】

  1. 取出整数列表中的奇数放入列表x中。

  2. 取出整数列表中的偶数放入列表y中。

  3. 合并列表x和y。

x = [i for i in range(1,9) if i%2 != 0]
print(x)
y = [i for i in range(1,9) if i%2 == 0]
print(y)
print(x+y)

【终端输出】

[1, 3, 5, 7]
[2, 4, 6, 8]
[1, 3, 5, 7, 2, 4, 6, 8]

【语法解析】

表达式:i

for循环语句:in range(1,9)

if条件判断语句:if i%2 != 0

已知的列表:range(1,9)

5.4 用map函数输出列表中所有元素的平方数

list1 = [1,2,3,4]
def fn (x):
    return x**2
res = map(fn, list1)
res = [i for i in res]
print(res)

【终端输出】

[1, 4, 9, 16]

【代码解析】

自定义一个函数fn。

x就是自定义函数fn的参数。

函数fn返回的是x的平方。

【代码示例】

def fn (x):
    return x**2
fn(3)

【终端输出】

9

fn(3)调用自定义函数。

这里的3传递给了fn函数的参数x。

题目要求的是输出列表中所有数的平方数,因此传递的参数就不是一个数,应该是列表里的所有元素。

res = map(fn, list1)

map函数的相关知识在第83节,链接如下:

83.map函数()-通过函数实现对可迭代对象的操作

map [mæp]:地图,映射。

【语法】

map(function, iterables=, ...)

【功能】

map函数接收一个函数为它的参数,接收一个或多个可迭代对象为另一个参数,返回一个迭代器。

此迭代器中的每个元素都是函数参数依次作用于可迭代对象后的结果。

map函数在这里的功能就相当于依次取出列表中的元素,进行fn函数运算,然后返回的结果是迭代器。

要显示迭代器里的具体内容,我们可以通过list函数,也可以用列表推导式。

map函数的参数1是fn自定义函数。

map函数的参数2是list1列表。

map函数返回的是一个迭代器。

【代码示例】

list1 = [1,2,3,4]
def fn (x):
    return x**2
res = map(fn, list1)
print(res)

【终端输出】

<map object at 0x000001F4E9E23CA0>

【列表推导式输出迭代器中的元素】

list1 = [1,2,3,4]
def fn (x):
    return x**2
res = map(fn, list1)

res = [i for i in res]
print(res)

【终端输出】

[1, 4, 9, 16]

i for i in res这是一个列表推导式。

表达式:i**2

已知的列表:res

创建的新列表:[1, 4, 9, 16]

【list函数输出迭代器中的元素】

list1 = [1,2,3,4]
def fn (x):
    return x**2
res = map(fn, list1)

print(list(res))

【终端输出】文章来源地址https://www.toymoban.com/news/detail-470488.html

[1, 4, 9, 16]

到了这里,关于90. Python列表推导式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 程序设计入门(008)—— 列表的操作(3):列表推导式

    使用列表推导式可以快速生成一个列表。或者根据某个列表生成满足指定需求的列表。列表推导式包含在方括号内,它由一个表达式、一个或多个 for 循环和一个用于过滤生成的列表的可选条件组成。 列表推导式的语法格式如下: 说明: (1)Expressinon:表达式,用于计算列

    2024年02月14日
    浏览(52)
  • Python列表差异值统计:集合操作、列表推导式、对称差集详解

      在Python中,统计两个列表的差异值有多种方法,其中包括使用集合操作、列表推导式等。下面我将通过实例详细讲解几种常见的方法,并提供相应的实例源代码。 这些方法各有优缺点,选择使用哪一种取决于你的具体需求和性能考虑。方法一和方法三使用了集合操作,可能

    2024年02月01日
    浏览(85)
  • python经典有序序列的list列表推导式

    生成一个数据列表 使用列表推导式生成该数据列表 分析: 1、使用一行代码的列表推导式就完成了该列表的生成 2、[i for i in range(20)],第一个i元素代表向列表list_2中添加的元素 3、[i for i in range(20)],第二个i元素代表for循环遍历的i元素 使用列表推导式生成只有偶数的数据列

    2024年02月02日
    浏览(60)
  • Python 列表推导式(List Comprehension)的使用

    样例代码: 输出如下: 源码解释: 在给定函数 func(g, arr) 中,表达式 [g(x) for x in arr] 是列表推导式(List Comprehension)的一种写法。它的作用是将函数 g 应用于列表 arr 中的每个元素 x ,并将结果存储在一个新的列表中。 解释 [g(x) for x in arr] 的过程如下: 对于列表 arr 中的每

    2024年02月12日
    浏览(41)
  • Python 列表推导式:简洁、高效的数据操作艺术

    Python 的列表推导式,这个看似简单的语法糖,实则内含无限威力。在 Python 代码编写中,列表推导式的灵活性和简洁性让它成为了不可或缺的一部分。在这篇文章中,我们将更全面、更深入地探讨列表推导式,从基础的概念认识,到各类进阶的用法和操作,我们一一揭秘。最

    2024年02月08日
    浏览(52)
  • python 列表推导同filter和map的比较

    filter 和 map 合起来能做的事情,列表推导也可以做,而且还不需要借助难以理解和阅读的 lambda 表达式。 我原以为 map/filter 组合起来用要比列表推导快一些,Alex Martelli 却说不一定——至少在上面这个例子中不一定。在本书的代码仓库(https://github.com/fluentpython/examplecode)中有

    2024年01月18日
    浏览(42)
  • 5、Python循环及列表推导式(List Comprehension)

    For 和 while 循环以及 Python最重要的功能:列表推导式(List Comprehension) 循环是重复执行某些代码的一种方式: In [1]: for 循环指定了以下内容: 要使用的变量名(在这种情况下是 planet ) 要循环遍历的值集合(在这种情况下是 planets ) 你使用 “ in ” 连接它们。 “ in ” 右边

    2024年01月19日
    浏览(46)
  • 【Python】进阶学习:列表推导式如何使用两个for循环

    【Python】进阶学习:列表推导式如何使用两个for循环 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您的订阅和支持~ 💡 创作高质量博文(平均质量分92+),分享更多关于深度学习、

    2024年03月17日
    浏览(66)
  • 90天玩转Python—11—基础知识篇:Python自动化操作Excel:读写、增删改查、分组统计全攻略

    90天玩转Python—01—基础知识篇:C站最全Python标准库总结 90天玩转Python--02--基础知识篇:初识Python与PyCharm 90天玩转Python—03—基础知识篇:Python和PyCharm(语言特点、学习方法、工具安装) 90天玩转Python—04—基础知识篇:Python编程基础:标识符、保留字、注释、多行语句、p

    2024年04月11日
    浏览(45)
  • 【力扣100】74.搜索二维矩阵 || 列表推导式

    添加链接描述 思路: 暴力求解 把矩阵降维,然后使用二分搜索 列表推导式 将二维数组变为一维数组中,使用 列表推导式 ,会更加简便 解法二: 思路: 同样是二分查找,把mid对应的二维坐标找到就可以了

    2024年01月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包