首页 > 编程语言 >非常有用的python单行代码

非常有用的python单行代码

时间:2022-12-07 16:45:21浏览次数:69  
标签:map 函数 有用 python reduce 一行 else 单行 print

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()是将传人的函数作用在序列的第一个元素得到结果后,把这个结果继续与下一个元素作用(累积计算)。

 

标签:map,函数,有用,python,reduce,一行,else,单行,print
From: https://www.cnblogs.com/daminghuahua/p/16963488.html

相关文章

  • python实现移动二级目录下的文件到一级目录
    python实现移动二级目录下的文件到一级目录importosimportshutilimportsysdefmove_to_work_folder(work_path,cur_path):"""将work_folder下的所有子......
  • Python模块pathlib操作文件和目录操作总结
    前言目前大家常用的对于文件和操作的操作使用 ​​os.path​​ 较多,比如获取当前路径​​os.getcwd()​​,判断文件路径是否存在​​os.path.exists(folder)​​ 等等。......
  • 力扣540(java&python)-有序数组中的单一元素(中等)
    题目:给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足O(logn)时间复......
  • Python 日志记录-loguru
    Python日志记录-loguru使用logging模块时用python写代码时,logging模块最基本的几行配置,如下:importlogginglogging.basicConfig(level=logging.INFO,format='%(ascti......
  • python字符串常用方法汇总
    常用方法如下:str="mynameis{name}andmyageis{age}"#统计字符串的长度print(len(str))#格式化输出也可当切片用的方式print(str.format(name="ming",ag......
  • 使用python opencv延时摄影
    以下内容和源码使用openai的chatGPT生成。下面是一个示例代码,它使用OpenCV库在Python中实现这个功能。请注意,这个程序需要您先安装OpenCV库。我们设置了摄像头编......
  • CSV__04--python使用迭代器读取csv文件出现读取结果为空的解决办法
    1迭代器的概念迭代器(iterator)有时又称光标(cursor)是程序设计的软件设计模式,可在容器对象(container,例如链表或数组)上遍访的接口。2迭代器的特点强制性:必须将元素从迭代......
  • 7个有用的Pandas显示选项
    Pandas是一个在数据科学中常用的功能强大的Python库。它可以从各种来源加载和操作数据集。当使用Pandas时,默认选项就已经适合大多数人了。但是在某些情况下,我们可能希望更......
  • Python爬虫实战,requests模块,Python爬取网易云歌曲并保存本地
    前言今天给大家简单演示的爬取了一下某易云歌曲的排行榜信息,最后将音乐保存到本地开发工具Python版本:3.6.4相关模块:requests模块re模块os模块环境搭建安装Pyth......
  • Opencv——python画点、画框
    画点:​​cv2.circle(img,center,radius,color[,thickness[,lineType[,shift]]])​​画框:​​cv2.rectangle(image,start_point,end_point,color,thickness)​​......