python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python列表推导式

python基础操作列表推导式

作者:i阿极

列表推导式形式较为简洁,是利用其它列表创建新列表的一种方式,它的工作方式类似于for循环,也可以嵌套if条件判断语句,需要的朋友可以参考下

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列表推导式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文