首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python 中甜甜的语法糖

Python 中甜甜的语法糖

作者头像
wsuo
发布于 2020-07-31 07:35:36
发布于 2020-07-31 07:35:36
1.7K00
代码可运行
举报
文章被收录于专栏:技术进阶之路技术进阶之路
运行总次数:0
代码可运行

本文分三部分讲述 python 中常用的语法糖,为什么分三部分,因为考虑到大家可能对 python 中的一些特有的数据结构不太熟悉,所以首先介绍;文章的最后将会介绍一些经典的函数语法糖。

首先解释一下语法糖是什么意思,其实就是简化我们的代码,让那些复杂的操作交给解释器来完成,这些语法糖刚开始学的时候觉得很难记住,如果看别人写的语法糖更容易蒙圈,还会嘀咕别人装什么装,但是一旦自己掌握,啧啧啧,一发不可收拾,可谓真香。

语法糖(Syntactic sugar):

  • 计算机语言中特殊的某种语法
  • 这种语法对语言的功能并没有影响
  • 对于程序员有更好的易用性
  • 能够增加程序的可读性
  • 简而言之,语法糖就是程序语言中提供[]的一种手段和方式而已。 通过这类方式编写出来的代码,即好看又好用,好似糖一般的语法。固美其名曰:语法糖

一、数据结构

这里主要介绍常用语语法糖的数据结构,熟悉的小伙伴可以跳过。

序列类型

在序列中元素类型可以不同,通过下标访问元素。

字符串类型、列表类型、元组类型都属于序列。

序列类型是双向索引,如上图所示。

序列类型常用的操作:

序列类型的函数与方法:

下面介绍元组类型

元组类型是序列类型的一种扩展,但是元组一旦创建就不能修改,元组使用 ()或者tuple()创建。

接下来是列表类型,列表类型可谓是最常用的一种数据结构,该序列创建之后可以随意修改,使用[]或者list()创建,列表类型特有的函数和方法如下:

值得一提的是列表中使用 [::-1] 表示反转字符串。

集合类型

集合是多个元素的无序组合,特点是元素不重复。创建使用 {} 或者 set() ;

集合操作符:

集合中常用的方法与函数:

字典类型

字典类型相当于 java 中的 Map ,即映射关系类型的数据结构:

使用{}dict()创建,使用冒号:表示键值关系。

二、语法糖

先说一个实用的技巧,就是字符串类型和列表类型互相转换的几种方法:

  • 首先是字符串类型到列表类型,使用list() 或者split()
  • 然后是列表转字符串:如果列表元素都为字符串可以使用"".join(ls),如果不全是则使用map(str,ls)然后再join
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//交换数字
a, b = b, a
//表示从b和c取一个较大的值赋值给a
a = [b, c][c > b]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 我们希望把正的放前面,负的放后面,并且分别按绝对值从小到大
lst = [1, -2, 10, -12, -4, -5, 9, 2]
// 这样即可
lst.sort(key=lambda x: (x < 0, abs(x)))
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Lambda 表达式
f=lambda x:x+1
// 

关于列表的列表推导式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 生成奇数序列
l=[2*x+1 for x in range(10)]

for 的嵌套

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[(x,y) for x in range(3) for y in range(3)]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

还可以使用 if 语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new_list = [expression(i) for i in old_list if condition(i)]

不过可读性极差,让别人来阅读你的代码是很痛苦的一件事。

三、函数语法

三大函数,很有用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
filter,map,reduce

首先是 filter 函数,filter 函数接受两个参数,第一个是过滤函数,第二个是可遍历的对象,用于选择出所有满足过滤条件的元素,返回一个可迭代对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 去除小写字母
s=filter(lambda x:not str(x).islower(),"asdasfAsfBsdfC")

map函数接受的参数类型与filter类似,它用于把函数作用于可遍历对象的每一个元素。类似于数学中映射的概念。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 求y=2x+1
s=map(lambda x:2*x+1,range(6))

reduce 函数对每个元素作累计操作,它接受的第一个参数必须是有两个参数的函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 求和
from functools import reduce
s=reduce(lambda x,y:x+y,range(1,6))

元组拆包:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
t=(1,2,3)
x,y,z=t

当然还有很多语法糖,欢迎留言补充。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Python环境】Python函数式编程指南(3):迭代器
3. 迭代器 3.1. 迭代器(Iterator)概述 迭代器是访问集合内元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问一遍后结束。 迭代器不能回退,只能往前进行迭代。这并不是什么很大的缺点,因为人们几乎不需要在迭代途中进行回退操作。 迭代器也不是线程安全的,在多线程环境中对可变集合使用迭代器是一个危险的操作。但如果小心谨慎,或者干脆贯彻函数式思想坚持使用不可变的集合,那这也不是什么大问题。 对于原生支持随机访问的数据结构(如tuple、list),迭代器和经典for循环的索引
陆勤_数据人网
2018/02/26
8720
python-for-data-python基础
本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list、元组tuple、字典dict和集合set。
皮大大
2021/03/01
1.4K0
python-for-data-python基础
python-内置函数(搭配lambda使用)
目录 常用的内置函数 需要注意的知识点: enumerate()函数 map()函数 zip()函数 filter()函数 reduce()函数 sum()函数 max()/ min()函数 sort()函数 sorted()函数 内置函数一览表: 常用的内置函数 学习! 需要注意的知识点: 大部分内置函数经常搭配lambda函数使用 可迭代对象:字符串、列表、元组、字典、集合、文件对象 注意!!!! 在py3中部分函数的返回值是一个迭代器,不能多次遍历,(map、filter、z
HammerZe
2022/03/25
7790
python-内置函数(搭配lambda使用)
C#语法之糖有点甜,语法之美很迷人
语法糖的出现绝对是广大码农的福音,为什么叫语法糖?简而言之就是你之前需要写10行代码,现在一行代码就可以搞定并且效率还不下降,你说甜不甜,鸡腿香不香?语法糖能够增加程序的可读性,从而减少程序代码出错的机会。下面介绍一下C#新增或者常用的语法糖。
苏州程序大白
2021/08/13
1.3K0
C#语法之糖有点甜,语法之美很迷人
Python装饰器、内置函数之金兰契友
装饰器:装饰器的实质就是一个闭包,而闭包又是嵌套函数的一种。所以也可以理解装饰器是一种特殊的函数。 因为程序一般都遵守开放封闭原则,软件在设计初期不可能把所有情况都想到,所以一般软件都支持功能上的扩展,而对源代码的修改是封闭的。 开放封闭原则主要体现在两个方面:
py3study
2020/01/17
4040
金三银四,50道必备的Python面试题(建议收藏)
在过去的2020年,Python赢得了年度TIOBE编程语言奖,成为过去一年最受欢迎的编程语言。在数据科学和机器学习等领域中,被广泛使用。
小F
2021/03/18
1.5K0
金三银四,50道必备的Python面试题(建议收藏)
Python 中的万能之王 Lambda 函数
Lambda函数也被称为匿名(没有名称)函数,它直接接受参数的数量以及使用该参数执行的条件或操作,该参数以冒号分隔,并返回最终结果。为了在大型代码库上编写代码时执行一项小任务,或者在函数中执行一项小任务,便在正常过程中使用lambda函数。
数据STUDIO
2022/05/24
1.7K0
python3内置函数大全
由于面试的时候有时候会问到python的几个基本内置函数,由于记不太清,就比较难受,于是呕心沥血总结了一下python3的基本内置函数
py3study
2020/01/13
1.2K0
【Python篇】Python 函数综合指南——从基础到高阶
在 Python 中,函数是构建程序的一个重要部分,它允许你封装逻辑并高效地重用代码。函数是组织良好的、可重复使用的代码块,用于执行单一的、相关的操作。函数为的应用提供了更好的模块化能力,并提高了代码的重用性。
半截诗
2024/10/09
5050
Deep Learning Chapter02:Python基础语法回顾
由于一年多没有接触python,现在恶补了下python基础语法,为以后的深度学习打下基础。现总结如下,希望对大家有所帮助。
北山啦
2022/10/31
1.1K0
Deep Learning Chapter02:Python基础语法回顾
盘一盘 Python 系列 1 - 入门篇 (下)
Python 里函数太重要了 (说的好像在别的语言中函数不重要似的)。函数的通用好处就不用多说了吧,重复使用代码,增强代码可读性等等。
用户5753894
2019/07/05
1.4K0
盘一盘 Python 系列 1 - 入门篇 (下)
基础语法_Haskell笔记1
Haskell是一种纯函数式语言(purely functional programming language),其函数式特性的纯度没有争议
ayqy贾杰
2019/06/12
2.2K0
python迭代和解析(3):range
range()是一个内置函数,它返回一个数字序列,功能和Linux下的seq命令差不多。
py3study
2020/01/21
7620
零基础入门Python:基本命令、函数、数据结构
导读:本文对Python的基本使用做一个简单的介绍。限于篇幅,本文不可能详细讲解Python的使用,只是针对本书涉及的数据挖掘案例所用到的代码进行基本讲解。如果读者是初步接触Python,并且使用Python的目的就是数据挖掘,那么相信本文的介绍对你来说是比较充足的了。
IT阅读排行榜
2020/04/12
8470
Python基础常见面试题总结[通俗易懂]
以下是总结的一些常见的Python基础面试题,帮助大家回顾基础知识,了解面试套路。会一直保持更新状态。 PS:加粗为需要注意的点。
全栈程序员站长
2022/11/19
2.5K0
Python基础常见面试题总结[通俗易懂]
Python3的语法糖和解析式
Python语言发展到3.X以来,增加了许多语法糖,例如: 三元表达式 x = int(input('>>>')) y = 3 print(x if x > y else y) #等效于: if x > y: print(x) else: print(y) 2.封装与解构 a = 4 b = 5 tmp = a a = b b = tmp #等价于 a,b = b,a #上句中,等号右边使用了封装(元组),左边使用了解构。 3.解析式 1).列表解析式: #语法:
py3study
2020/01/03
6050
Python进阶笔记
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。一般是利用原有的数据结构来生成新的列表。
py3study
2020/01/03
1.2K0
Python基础知识总结
WHY Python首先,学一门语言都会问:点解要学这门语言而学Python的原因很简单,原因就是…..好鬼简单.(这句话不是我说的) 很喜欢Python极简的代码风格,以及众多功能强大的模块…… 学了两天Python有点点体会,觉得应该总结一下有哪些应该注意的地方. 基本问题 学习途径 初学者推荐一个公众号:Crossin的编程教室(喜欢作者的教学方式) 环境配置 用Mac或者Linux的同学是幸福的,直接在终端输入idle就好了,这两个系统都是默认自带Python的,如果想直接在终端打开Python S
Locker
2018/08/01
1.6K0
Python基础知识总结
Python中的语法糖甜不甜?
语法糖(Syntactic Sugar),也被译为糖衣语法,是由英国计算机科学家彼得·约翰·兰大(Peter J.Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说,使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
测试蔡坨坨
2022/09/26
1.1K2
看代码学习python基础
#-- 寻求帮助: dir(obj) # 简单的列出对象obj所包含的方法名称,返回一个字符串列表 help(obj.func) # 查询obj.func的具体介绍和用法 #-- 测试类型的三种方法,推荐第三种 if type(L) == type([]): print("L is list") if type(L) == list: print(
py3study
2020/01/10
9600
相关推荐
【Python环境】Python函数式编程指南(3):迭代器
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验