栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python学习(六)推导式

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python学习(六)推导式

1.列表推导式

        作用:用一个表达式创建一个有规律的列表或控制一个有规律的列表;列表推导式又叫列表生成式,化简代码

步骤:创建空列表,循环将有规律的数据写入到列表

案例:创建一个0-10的列表

while方式:

list=[]
i=0
while i <10:
    list.append(i)
    i+=1
print(list)
#结果
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for方式:

list=[]
for i in range(11):
    list.append(i)
print(list)
#结果
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 直接在列表里写代码:

list=[i for i in range(11)]
print(list)
#结果
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

带if的列表推导式:

        创建0-10的偶数列表:

#方法一:用range步长控制
list=[i for i in range(0,11,2)]
print(list)
#方法二:for循环
list=[]
for i in range(11):
    if i%2==0:        #余数为0
        list.append(i)
print(list)
#方法三:while循环
list=[]
i=0
while i <11:
    if i%2==0:
        list.append(i)
    i+=1
print(list)
#方法四:if实现
list=[i for i in range(11) if i%2==0]    #条件为真,则输出左边
print(list)
#结果
[0, 2, 4, 6, 8, 10]
[0, 2, 4, 6, 8, 10]
[0, 2, 4, 6, 8, 10]
[0, 2, 4, 6, 8, 10]

多个for循环实现列表推导式:

如:创建列表如下:[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)] 

思路如下:设定i是在元组第一个数据1-2的范围,j是元组第二个数据0-3的范围

# 创建列表:[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
list=[(i,j)for i in range(1,3) for j in range(3)]
print(list)
#结果
[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

#for循环嵌套式:
# 创建列表:[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
list=[]
for i in range(1,3):
    for j in range(3):
        list.append((i,j))
print(list)

2.字典推导式 

        字典推导式的作用:快速合并列表为字典或提取字典中目标数据。

案例1:字典key是1-5的数字,value是该数字的2次方

dict={i:i**2 for i in range(1,6) }
print(dict)
#结果
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

 案例2:将两个列表合并为一个字典

list=['name','age','gender']
list1=['jack',10,'man']
dict={list[i]:list1[i] for i in range(len(list))}
print(dict)
#结果
{'name': 'jack', 'age': 10, 'gender': 'man'}

当两个列表的个数不一致时,如果range是在个数多的长度,那么会报错,如果range是列表个数少的那个长度,则会将合并成少个数的键值对,个数多的那个列表,截取到一致的长度。

list=['name','age','gender']
list1=['jack',10]
dict={list[i]:list1[i] for i in range(len(list1))}
print(dict)
#结果
{'name': 'jack', 'age': 10}#list1个数为2,所以截取list长度为2个的为止
#如果len(list)的话,则会报错

         提取字典中的目标数据

案例3:提取值大于等于200的字段数据

#将键值对值大于等于200的数据提取出来
#步骤:先用items将所有的键值对提取出来,然后加个条件:value>=200

a={'TCL':101,'Hat':212,'redis':109,'node-red':204,'tomcat':79}
dict={key:value for key,value in a.items() if value>=200}
print(dict)
#结果
{'Hat': 212, 'node-red': 204}

3.集合推导式

创建一个集合,数据为下方列表的2次方

list=[1,1,3]
set={i**2 for i in list}
print(set)
#结果
{1, 9}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/920842.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号