文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python基础操作列表推导式

2023-05-17 08:40

关注

python基础——列表推导式

一、实验目的

掌握Python数据结构:列表推导式的用法。

二、实验原理

列表推导式(list comprehension)列表推导式形式较为简洁,是利用其它列表创建新列表的一种方式,它的工作方式类似于for循环,也可以嵌套if条件判断语句。

基本格式:

variable = [out_exp_res for out_exp in input_list if out_exp == 2]

out_exp_res:列表生成元素表达式,可以是有返回值的函数。

for out_exp in input_list:迭代input_list将out_exp传入out_exp_res表达式中。

if out_exp == 2:根据条件过滤哪些值可以。

三、实验环境

Python 3.6以上

Ipython

PyCharm

四、实验内容

本实验详细介绍了Python数据结构:列表推导式的用法

五、实验步骤

1.利用列表推导式求0~9的二次方,示例如下:

list1=[x*x for x in range(10)]
print(list1)

结果如下:

在这里插入图片描述

相当于

list2=[]
for x in range(10):
    list2.append(x*x)

list2

示例结果如下:

在这里插入图片描述

2.使用列表推导式实现嵌套列表的平铺,示例如下:

lists= [[1,2,3],[4,5,6],[7,8,9]]
[one for list1 in lists for one in list1]

示例结果如下:

在这里插入图片描述

在这个列表推导式中有2个循环,其中第一个循环可以看作是外循环,执行的慢,而第二个循环可以看作是内循环,执行的快,上面代码的执行过程等价于下面的写法,示例如下:

lists = [[1,2,3],[4,5,6],[7,8,9]]
result = []
for list1 in lists :
    for one in list1 :
        result.append(one)

result

示例结果如下:

在这里插入图片描述

3.过滤不符合条件的元素,在列表推导式中可以使用if子句来进行筛选,只在结果列表中保留符合条件的元素,示例如下:

list1= [-5,-9,4,-8,1,8,3,4,9,22,15]
list2=[i for i in list1 if i>0]
list2

示例结果如下:

在这里插入图片描述

4.已知有一个包含同学成绩的字典,请计算成绩的最高分、最低分、平均分,并查找拥有最高分的同学,示例如下:

scores = {'zhang san':45,'li si':78,'wang wu':40,'zhou liu':96,'zhao qi':65,'su ba':90,'zheng jiu':78,'wu shi':99,'dong shiyi':60}
highest=max(scores.values())
print('The highest score:',highest)
lowest = min(scores.values())
print('The lowest score:',lowest)
average = sum(scores.values())/len(scores)
print('The Averagescore:',average )
highestPerson = [name for name,score in scores.items() if score == highest]
print('The name of the highest grade student:',highestPerson )

示例结果如下:

在这里插入图片描述

5.在列表推导式中使用多个循环,实现多序列元素的任意组合,并且可以结合条件语句过滤特定元素,示例如下

[(x,y) for x in [1,2,3] for y in [3,1,4] if x != y]

示例结果如下:

在这里插入图片描述

该示例代码等价于

result=[]
for x in [1,2,3]:
    for y in [3,1,4]:
        if x != y:
            result.append((x,y))

result

6.使用列表推导式实现矩阵转置,示例如下:

list1= [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
[[row[i] for row in list1] for i in range(4)]

示例结果如下:

在这里插入图片描述

也可以使用内置函数zip()和list()来实现矩阵转置,示例如下:

list1= [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
list(map(list,zip(*list1)))

7.列表推导式中可以使用函数或复杂表达式,示例如下:

def f(v):
    if v%2==0:
        v=v**2
    else:
        v=v+1
    return v

print([f(v) for v in [2,3,4,-1] if v>0])
print([v**2 if v%2 == 0 else v+1 for v in [2,3,4,-1] if v>0])

示例结果如下:

在这里插入图片描述

8.使用列表推导式生成100以内的所有素数,示例如下:

import math
print([p for p in range(2,100) if 0 not in [p%d for d in range (2,int(math.sqrt(p)) +1)]],end=" ")

示例结果如下:

在这里插入图片描述

到此这篇关于python基础操作列表推导式的文章就介绍到这了,更多相关python列表推导式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯