22-推导式

简介: Python

推导式
Python语言有一种独特的推导式语法,相当于语法糖的存在,可以帮你在某些场合写出比较精简酷炫的代码。

列表推导式
列表推导式是一种快速生成列表的方式。其形式是用方括号括起来的一段语句
lis = [x * x for x in range(1, 10)]
print(lis)
结果:[1, 4, 9, 16, 25, 36, 49, 64, 81]
如果不用推导式,如何完成这个功能
lis = []
for i in range(10):
lis.append(i*i)
print(lis)
打印结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
列表推导式,还可以增加一些条件,其核心语法是用中括号[]将生成逻辑封装起来
lis = [i*i for i in range(10) if i%2 == 0]
print(lis)
打印结果:
[0, 4, 16, 36, 64]
多重循环
lis = [a+b for a in ‘123’ for b in ‘abc’]
print(lis)
同时循环a和b两个变量,在进行拼接
打印结果:
[‘1a’, ‘1b’, ‘1c’, ‘2a’, ‘2b’, ‘2c’, ‘3a’, ‘3b’, ‘3c’]
更多用法
dic = {“k1”:‘v1’,‘k2’:‘v2’}
lis = [k+“:”+v for k,v in dic.items()]
print(lis)
打印结果:
[‘k1:v1’, ‘k2:v2’]

字典推导式
有列表推导式,那有没有字典推导式呢?答案是有的,使用{}就可以定义了。
dic = {i:i**3 for i in range(5)}
print(dic)
i的三次方
打印结果:
{0: 0, 1: 1, 2: 8, 3: 27, 4: 64}

集合推导式
大括号除了能用作字典推导式,还可以用作集合推导式,两者仅仅在细微处有差别。
s = {i for i in ‘abasrdfsdfa’ if i not in ‘abc’}
print(s)
把abc排除剩余字符串
打印结果:
{‘r’, ‘f’, ‘s’, ‘d’}

有同学会说还有元组推导式,但是在python中元组被用作生成器了。是没有元组推导式的
tup = (x for x in range(9))
print(tup)
print(type(tup))
打印结果


tup = tuple(x for x in range(9))
print(tup)
print(type(tup))

打印结果:
(0, 1, 2, 3, 4, 5, 6, 7, 8)

面试真题
看下面代码回答输出的结果是什么?为什么?
result = [lambda x: x + i for i in range(10)]
print(result0)

分析:
result = [lambda x: x + i,lambda x: x + i,lambda x: x + i,…]
print((lambda x: x + i)(10))
f = lambda x: x + i
f(10)
最终输出的结果为19

相关文章
|
5月前
|
监控 供应链 数据挖掘
淘宝商品详情API接口解析与 Python 实战指南
淘宝商品详情API接口是淘宝开放平台提供的编程工具,支持开发者获取商品详细信息,包括基础属性、价格、库存、销售策略及卖家信息等。适用于电商数据分析、竞品分析与价格策略优化等场景。接口功能涵盖商品基础信息、详情描述、图片视频资源、SKU属性及评价统计的查询。通过构造请求URL和签名,可便捷调用数据。典型应用场景包括电商比价工具、商品数据分析平台、供应链管理及营销活动监控等,助力高效运营与决策。
317 26
|
9月前
|
数据可视化 数据挖掘
知识共享:解锁企业创新潜力的关键
本文探讨了在信息爆炸时代构建高效知识共享机制的重要性及方法。知识共享不仅能提升团队协作效率和创新能力,还能降低重复劳动、促进知识积累。文章从文化驱动、技术支持和流程优化三个维度介绍了建立知识共享机制的关键要素,并推荐了创新工具如板栗看板,帮助团队通过模块化、可视化的方式优化知识管理流程,最终实现知识共享的无缝嵌入与高效应用。
236 15
|
12月前
|
存储 缓存 网络协议
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器化技术融合实践
【5月更文挑战第6天】随着企业IT架构的复杂化以及快速迭代的市场需求,传统的运维模式已难以满足高效率和高质量的交付标准。本文将探讨如何通过结合DevOps理念和容器化技术来构建一个高效的自动化运维体系,旨在实现持续集成、持续部署和自动化管理,提升系统的可靠性、可维护性和敏捷性。
|
弹性计算 NoSQL MongoDB
用云服务器ECS玩转Leanote个人云笔记
本教程将介绍如何搭建个人Leanote云笔记。
149831 7
|
SQL 存储 小程序
【教程】navicat配合HTTP通道远程连接SQLite数据库
本文介绍了如何通过 Navicat Premium 工具配合 n_tunnel_sqlite.php 和 HTTP 通道远程连接服务器上的 SQLite 数据库。SQLite 是一种自给自足的、无服务器的 SQL 数据库引擎,由于其端口未对外开放,直接使用 Navicat 进行远程连接不可行。文章详细记录了使用 HTTP 通道实现远程连接的过程,包括定位本地 `ntunnel_sqlite.php` 文件,将其上传至服务器,并通过 Navicat 配置 HTTP 通道连接 SQLite 数据库的具体步骤。
732 0
【教程】navicat配合HTTP通道远程连接SQLite数据库
|
存储 安全 Linux
从零开始学习DPDK:掌握这些常用库函数就够了(上)
从零开始学习DPDK:掌握这些常用库函数就够了
|
XML Java 数据格式
springboot 微服务项目如何集成 html 页面
springboot 微服务项目如何集成 html 页面
400 0
|
存储 安全 定位技术
使用阿里云的国外和国内云服务器
使用阿里云的国外和国内云服务器
459 1
kali2023.1 bluetooth bug:br-connection-profile-unavailable
kali2023.1 bluetooth bug:br-connection-profile-unavailable
301 0