三元表达式

三元表达式是if判断语句的简化写法,只适用于if与else连用的情况。

语法结构:

res = 条件成立时返回的值 if 条件 else 条件不成立时返回的值

举例:

"""正常写法"""
if a >= 60:
res = '及格'
else:
res = '不及格' """三元表达式"""
res = '及格' if a >= 60 else '不及格'

两种写法功能一样,但是三元表达式的代码更加的简洁。

各种生成式

列表生成式(可同样作用于集合)

列表生成式可以快速生成一个我们想要的列表。

比如我想生成一个1到10的列表

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

比如我想生成11到20的列表

l = [i + 10 for i in range(1, 11)]
print(l)
# [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

比如我想把['jason', 'kevin', 'tony', 'oscar', 'jerry']列表的每一个元素后加上'888'

name_list = ['jason', 'kevin', 'tony', 'oscar', 'jerry']
new_name_list = [name + '888' for name in name_list]
print(new_name_list)
# ['jason888', 'kevin888', 'tony888', 'oscar888', 'jerry888']

列表生成式还具备筛选能力,比如我想获取1到10的偶数

l = [i for i in range(1, 11) if i % 2 == 0]
print(l)
# [2, 4, 6, 8, 10]

列表生成式中的if判断不能有else分支

字典生成式

字典生成式可以快速生成一个我们想要的字典。

比如有两组等长的数据,把它们作为键值对的方式存入字典

l1 = ['name', 'age', 'pwd']
l2 = ['jason', 18, 123]
d = {l1: l2 for i in range(len(l1))}
print(d)
# {'name': 'jason', 'age': 18, 'pwd': 123}

字典生成式同样具备筛选能力

l1 = ['name', 'age', 'pwd']
l2 = ['jason', 18, 123]
d = {l1[i]: l2[i] for i in range(len(l1)) if i < 2}
print(d)
# {'name': 'jason', 'age': 18}

匿名函数

匿名函数从字面意思就能看出这应该是一个不透露名字的函数。

语法结构:

lambda 形参:返回值

想必这时候就有人很好奇了,没有名字该如何调用这个函数呢?

案例:

f = lambda x: x + 2
print(f(5)) # 输出:7 """等价于"""
def f(x):
return x + 2
print(f(5)) # 输出:7

配合函数使用:

"""max()是获取括号内最大值的函数"""
# 如果括号内只有字典只会比较key值大小
d = {
'a': 52,
'b': 2,
'c': 24,
'd': 33,
'e': 15
}
print(max(d)) # 输出:e """如果想比较value值大小,这个时候就可以用到匿名函数了"""
# max()里可以传函数进去
print(max(d, key=lambda x: d[x])) # 输出:a

重要内置函数

map()

可以配合函数更改数据集数据

比如我想要将列表中的数据都自减11

l1 = [11, 22, 33, 44, 55]
res = map(lambda x: x - 11, l1) # 返回的是一个对象
print(res) # 输出:<map object at 0x00000171A22DC400> # 将map()返回的对象转成列表类型
res = list(res)
print(res) # 输出:[0, 11, 22, 33, 44]

zip()

将括号内的数据集的每一个元素一一对应,每一个对应的元素放到一个元组中,再把这些元组放到列表中

l1 = ['name', 'age', 'pwd']
l2 = ['jason', 18, 123]
res = zip(l1, l2) # 返回的是一个对象
print(res) # 输出:<zip object at 0x00000180997CF0C8> # 将zip()返回的对象转成列表类型
res = list(res)
print(res) # 输出:[('name', 'jason'), ('age', 18), ('pwd', 123)]

如果数据集个数不对应,会按照短的来

l1 = ['name', 'age', 'pwd', 'sex']
l2 = ['jason', 18, 123]
res = zip(l1, l2)
print(list(res)) # 输出:[('name', 'jason'), ('age', 18), ('pwd', 123)]

括号内的数据集可以有数个

l1 = [11, 22, 33]
l2 = ['jason', 'kevin', 'tony']
l3 = [1, 2, 3]
l4 = [55, 66, 77]
res = zip(l1, l2, l3, l4)
print(list(res))
# 输出:[(11, 'jason', 1, 55), (22, 'kevin', 2, 66), (33, 'tony', 3, 77)]

filter()

可以配合函数筛选数据集,过滤掉不符合的数据

比如我只要一个列表中的偶数

l1 = [11, 22, 33, 44, 55, 66]
res = filter(lambda x: x % 2 == 0, l1) # 返回的是一个对象
print(res) # 输出:<filter object at 0x000001B755A0C400> # 将filter()返回的数据转换为列表
res = list(res)
print(res) # 输出:[22, 44, 66]

reduce()

配合函数将数据集中的元素进行积累运算

比如我先把列表中的所有元素相加

# 使用前需要导入模块
from functools import reduce l1 = [11, 22, 33]
res = reduce(lambda x, y: x + y, l1) # 返回的是一个值
print(res) # 输出:66

把列表所有元素相乘

# 使用前需要导入模块
from functools import reduce l1 = [10, 20, 30]
res = reduce(lambda x, y: x * y, l1) # 返回的是一个值
print(res) # 输出:6000

常见内置函数(部分)

常见内置函数有很多,这里先列举部分常见内置函数

函数 作用 用法
abs(x) 获取x的绝对值 >>> abs(-100)
100
all(x) x中的元素全部为True才会返回True,否则返回False >>> all([0, 1, 1, True])
False
any(x) x中的元素有一个为True就返回True,全为False才会返回False >>> any([True, 0, False])
True
bin(x) 将x转为二进制 >>> bin(15)
'0b1111'
oct(x) 将x转为八进制 >>> oct(15)
'0o17'
hex(x) 将x转为十六进制 >>> hex(15)
'0xf'
bytes(x,y) 相当于encode解码,将x转换成指定编码y >>> bytes('你好', 'utf8')
b'\xe4\xbd\xa0\xe5\xa5\xbd'
callable(x) 判断x是否可以被调用,就是能否x() >>> x = 5
>>> callable(x)
False
>>> def index(s):
... return index
>>> callable(index)
True
chr(x) 将ASCII码转成字符 >>> chr(65)
'A'
ord(x) 将字符转成ASCII码 >>> ord('A')
65
dir(x) 获取x的可调用的所有方法,不添加参数时获取所在范围的所有方法 >>> dir(5)
['__abs__', '__add__', '__and__', '__bool__'...]
divmod(x, y) 返回x // y和 x % y >>> divmod(250, 25)
(10, 0)
>>> divmod(249, 25)
(9, 24)
>>> divmod(251, 25)
(10, 1)
enumerate(x, y) 一般用在for循环中,y不写就是从0开始,返回x的每一个元素和y,每返回一个元素,y的值就会加1 >>> for i,j in enumerate(['a', 'b', 'c']):
... print(i, j)
0 a
1 b
2 c
eval(x) 可以识别简单逻辑的字符串代码 >>> eval('abs(-100)')
100
exec(x) 可以识别复杂逻辑的字符串代码 >>> exec(
... """
... for i in range(3):
... print(i)
... """
... )
0
1
2

python之三元表达式与生成式与匿名与内置函数(部分)的更多相关文章

  1. python递归-三元表达式-列表生成式-字典生成式-匿名函数-部分内置函数-04

    递归 递归: # 函数在调用阶段直接或间接地又调用了自身 应用场景: # 将列表中的数字依次打印出来(循环的层数是你必须要考虑的点)   -->  l = [1, [2, [3, [4, [5, ...

  2. python基础12_匿名_内置函数

    一个二分查找的示例: # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, ...

  3. Python——day14 三目运算、推导式、递归、匿名、内置函数

    一.三目(元)运算符 定义:就是 if...else...语法糖前提:简化if...else...结构,且两个分支有且只有一条语句注:三元运算符的结果不一定要与条件直接性关系​ cmd = input ...

  4. Python开发基础-Day10生成器表达式形式、面向过程编程、内置函数部分

    生成器表达式形式 直接上代码 # yield的表达式形式 def foo(): print('starting') while True: x=yield #默认返回为空,实际上为x=yield No ...

  5. python基础之递归,匿名,内置函数

    递归函数: 什么是递归函数? 函数递归调用:在调用一个函数的过程中,又直接或间接地调用了该函数本身. 递归必须要有两个明确的阶段: ①递推:一层一层递归调用下去,强调:每进入下一层问题规模减少 ②回溯 ...

  6. python基础之生成器表达式形式、面向过程编程、内置函数部分

    生成器表达式形式 直接上代码 1 # yield的表达式形式 2 def foo(): 3 print('starting') 4 while True: 5 x=yield #默认返回为空,实际上为 ...

  7. python学习笔记(五):装饰器、生成器、内置函数、json

    一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里 ...

  8. Day 14 三元运算符,列表推导式,内置函数

    三目运算符 ```python# 三目(元)运算符:就是 if...else...语法糖# 前提:简化if...else...结构,且两个分支有且只有一条语句# 注:三元运算符的结果不一定要与条件直接 ...

  9. python成长之路第三篇(3)_内置函数及生成器迭代器

    打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.lambda表达式 2.map内置函数 3.filter内置函数 4.reduce内置函数 5.yield生成器 ...

随机推荐

  1. H5移动端开发

    开发前准备 环境: Node.js LTS版本 git 最新版 文档: 本项目技术栈基于 ES2016 VueJS vux 快速开始 1.克隆项目 git clone https://gitee.co ...

  2. Codepen 每日精选(2018-4-11)

    按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以打开原始页面. 纯 css 写行走的大象https://codepen.io/FabioG/ful... 纯 css 画的 ...

  3. python-汇率兑换

    按照1美元=6人民币的汇率编写一个美元和人民币的双向兑换程序 输入格式: 输入人民币或美元的金额,人民币格式如:R100,美元格式如:$100 输出格式: 输出经过汇率计算的美元或人民币的金额,格式与 ...

  4. python爬虫---虎牙直播封面采集

    代码: import requests from lxml import etree # html解析库 source = requests.get("https://www.huya.co ...

  5. C#ASP.NET网站开发步骤

    1. 创建项目ASP.NET Web 应用程序. 2. 选择"Web 窗体"模板,然后单击 "确定" 按钮创建项目. 3. 在解决方案资源管理器中,右键添加we ...

  6. 在IntelliJ IDEA配置Tomcat

    1,点击Run---EDit Configurations... 2.点击左侧"+"号,找到Tomcat Server---Local(若是没有找到Tomcat Server 可以 ...

  7. 51单片机I/O引脚IO口工作原理

    51单片机I/O引脚IO口工作原理 一.51单片机管脚p0.p1.p2.p3口区别如下: 1.意思不同P0口作输出口用时,需加上拉电阻.P0口有复用功能.当对外部存储器进行读写操作时,P0口先是提供外 ...

  8. 《码处高效:Java开发手册》之代码风格

    流水淡,碧天长,鸿雁成行.编码风格,简捷清爽,反引无限风光. 在美剧<硅谷>中有这样一个经典镜头,主人公 Richard 与同为开发工程师的女友闹分手,理由是两人对缩进方式有着截然不同的编 ...

  9. VS Code失焦时自动保存编辑器内容

    vs code有一个非常好用的功能:就是自动保存. 而且不需要安装什么插件,只需要在编辑器设置就可以了.接下来我们一起来设置吧: 1.打开我们的vs code编辑器.在左下角有个  齿轮图标(管理), ...

  10. 关于 display: inline-block; 中间有间隙的问题

    当我们给一个元素的一系列子元素设置display: inline-block; 时,会发现子元素之间存在间隙,如 <style> div { display: inline-block; ...