1 推导式应用

1.1 列表推导式(一行for循环)
#For循环在一行
mylist = [200, 300, 400, 500]
#正常方式
result = []
for x in mylist:
if x > 250:
result.append(x)
print(result) # [300, 400, 500]
#一行代码方式
result = [x for x in mylist if x > 250]
print(result) # [300, 400, 500]

2 三元运算符应用

# 语法
[on true] if [expression] else [on false]
2.1 一行 if-else 语句
#if Else 在一行中
#Example 1 if else
print("Yes") if 8 > 9 else print("No") # No
#Example 2 if elif else
E = 2
print("High") if E == 5 else print("数据STUDIO") if E == 2 else
print("Low") # 数据STUDIO #Example 3 only if
if 3 > 2: print("Exactly") # Exactly

3 匿名函数应用

# 语法
result = lambda[arg1[,arg2,...,argn]]:expression
result:用于调用lambda表达式。
[arg1[,arg2,…,argn]]:可选参数,用于指定要传递的参数列表,多个参数使用逗号“,”分隔。
expression:必选参数,用于指定一个实现具体功能的表达式,如果有参数,那么在该表达式中将应用这些参数。

️ 使用lambda表达式时,参数可以有多个,用逗号“,”分隔,但是表达式只能有一个,即只能返回一个值,而且也不能出现其他非表达式语句(如for或while)。

3.1 一行函数
#函数在一行中
#方法一
def fun(x): return True if x % 2 == 0 else False
print(fun(2)) # False
#方法2
fun = lambda x : x % 2 == 0
print(fun(2)) # True
print(fun(3)) # False
3.2 一行递归
# 单行递归
#Fibonaci 单行递归示例
def Fib(x): return 1 if x in {0, 1} else Fib(x-1) + Fib(x-2)
print(Fib(5)) # 8
print(Fib(15)) # 987

4 一行while循环

#方法 1 Single Statement
while True: print(1) #infinite 1
#方法 2 多语句
x = 0
while x < 5: print(x); x= x + 1 # 0 1 2 3 4 5

5 一行合并字典

# 在一行中合并字典
d1 = { 'A': 1, 'B': 2 }
d2 = { 'C': 3, 'D': 4 }
#方法 1
d1.update(d2)
print(d1) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
#方法 2
d3 = {**d1, **d2}
print(d3) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}

6 一行异常处理

# 一行异常处理
#原始方式
try:
print(x)
except:
print("Error")
#单行方式
exec('try:print(x) \nexcept:print("Error")') # 错误

7 一行列表转字典

# 字典在一行
mydict = ["John", "Peter", "Mathew", "Tom"]
mydict = dict(enumerate(mydict))
print(mydict) # {0: 'John', 1: 'Peter', 2: 'Mathew', 3: 'Tom'}

8 一行多变量

#多行变量
#正常方式
x = 5
y = 7
z = 10
print(x , y, z) # 5 7 10
#单行方式
a, b, c = 5, 7, 10
print(a, b, c) # 5 7 10

9 一行交换值

#换成一行
#正常方式
v1 = 100
v2 = 200
temp = v1
v1 = v2
v2 = temp
print(v1, v2) # 200 100
# 单行交换
v1, v2 = v2, v1
print(v1, v2) # 200 100

10 一行排序

# 在一行中排序
mylist = [32, 22, 11, 4, 6, 8, 12]
# 方法 1
mylist.sort()
print(mylist) # # [4, 6, 8, 11, 12, 22, 32]
print(sorted(mylist)) # [4, 6, 8, 11, 12, 22, 32]

️ sort和sorted区别

sort是在原位重新排列列表,而sorted()是产生一个新的列表

sort 只是应用在 list 上的方法(就地排序无返回值)。sorted 是内建函数,可对所有可迭代的对象进行排序操作(返回新的list)。

11 一行读取文件

#一行读取文件
#正常方式
with open("data.txt", "r") as file:
data = file.readline()
print(data) # Hello world
#单行方式
data = [line.strip() for line in open("data.txt","r")]
print(data) # ['hello world', 'Hello Python']

12 一行分号

a = "Python"; b = "编程"; c = "语言"; print(a, b, c)

13 一行打印

# 一行打印
#正常方式
for x in range(1, 5):
print(x) # 1 2 3 4
#单行方式
print(*range(1, 5)) # 1 2 3 4
print(*range(1, 6)) # 1 2 3 4 5

14 一行map函数

Map 函数是适用的高阶函数。这将函数应用于每个元素。下面是我们如何在一行代码中使用 map 函数的示例。

#在一行中map
print(list(map(lambda a: a + 2, [5, 6, 7, 8, 9, 10])))
# 输出
# [7, 8, 9, 10, 11, 12]

️ map和reduce的区别

reduce返回的是函数经过执行运算后的结果,reduce累计运算,适合做大数据的运算,前两个元素作用得到结果后,继续和下一个元素运算

from functools import reduce

sum1 = reduce(lambda x, y: x + y, range(1, 5))
print(sum1) # 10

map返回的是个集合,函数依次作用到每一个元素,每个元素都会被函数单独作用一次

sum2 = map(lambda y: y ** 2, range(1, 5))
print(type(sum2)) # <class 'map'>
print(sum2) # <map object at 0x7f809ce4c1d0>
for i in sum2:
print(i) # 1,4,9,16

总结:

map和reduce函数均是接受两个参数,第一个参数,均是一个函数,可以是匿名函数,也可以是普通的函数,第二个参数是一个可迭代的序列(列表 或元组)

map函数的第一个参数是函数,函数的参数可以是1个或者多个,而reduce只能接受2个参数。

map()是将传入的函数依次作用到序列的每个元素,每个元素都是独自被函数“作用”一次 。
reduce()是将传人的函数作用在序列的第一个元素得到结果后,把这个结果继续与下一个元素作用(累积计算)。

最新文章

  1. awk命令速查
  2. C#学习网站记录
  3. Delphi QC 记录
  4. -[UIViewController _loadViewFromNibNamed:bundle:]
  5. CISCO系列交换机如何清空配置
  6. Bug 是改不完滴
  7. php学习-快速开发框架thinkphp-day1
  8. Linux和Windows下的进程管理总结
  9. Samples DataBind FastJson循环引用问题
  10. 数据备份--dump(此作者有许多有用的博客文章)
  11. JDK动态代理简单小程序
  12. Xcode插件推荐
  13. 第六篇Scrum冲刺博客
  14. vue启动时候报错
  15. 2017GCTF部分writeup
  16. IIC时序和24C02读写字节时序
  17. HOG算法资源备忘
  18. 如何保证 spring-boot 和 spring-cloud版本一致
  19. 喵哈哈村的魔法考试 Round #21 (Div.2) 题解
  20. js 微信支付

热门文章

  1. SqlServer中 Partition By 的使用( 对多行数据分组后排序取每个产品的第一行数据)
  2. 肖sir__网页线下面试
  3. Net6的核心组件之中间件
  4. (Jmeter笔记)设置全局变量,跨线程调用变量,函数助手使用方法__setProperty和__p
  5. 实时中文语音克隆——开源项目MockingBird体验
  6. memoのPython环境配置
  7. Knowledge Fusion例子
  8. 快速了解 Kubernetes 的架构及特性
  9. BASE64编码作业
  10. Java 基础(二)