非常有用的python单行代码
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()是将传人的函数作用在序列的第一个元素得到结果后,把这个结果继续与下一个元素作用(累积计算)。
非常有用的python单行代码的更多相关文章
- 有用的Python代码片段
我列出的这些有用的Python代码片段,为我节省了大量的时间,并且我希望他们也能为你节省一些时间.大多数的这些片段出自寻找解决方案,查找博客和StackOverflow解决类似问题的答案.下面所有的代 ...
- 10个惊艳的Swift单行代码
几年前,一篇表述“10个Scala函数式单行代码”的文章非常受欢迎,并且随后立马出现了其他的语言版本,例如Haskell版本,Ruby版本,Groovy版本,Clojure版本,Python版本,C# ...
- Python静态代码检查工具Flake8
简介 Flake8 是由Python官方发布的一款辅助检测Python代码是否规范的工具,相对于目前热度比较高的Pylint来说,Flake8检查规则灵活,支持集成额外插件,扩展性强.Flake8是对 ...
- Python一行代码
1:Python一行代码画出爱心 print]+(y*-)**-(x**(y*<= ,)]),-,-)]) 2:终端路径切换到某文件夹下,键入: python -m SimpleHTTPServ ...
- python爬虫代码
原创python爬虫代码 主要用到urllib2.BeautifulSoup模块 #encoding=utf-8 import re import requests import urllib2 im ...
- Java 编程下 Eclipse 如何设置单行代码显示的最大宽度
Eclipse 下一行代码的默认宽度是 80 , 稍长一点的一行代码就会自动换行,代码可读性较差,我们可以自己在 Eclipse 对代码宽度进行设置. 设置路径为:[Window]→[Preferen ...
- 20个开发人员非常有用的Java功能代码
本文将为大家介绍20个对开发人员非常有用的Java功能代码.这20段代码,可以成为大家在今后的开发过程中,Java编程手册的重要部分. 1. 把Strings转换成int和把int转换成String ...
- Python小代码_2_格式化输出
Python小代码_2_格式化输出 name = input("name:") age = input("age:") job = input("jo ...
- Python小代码_1_九九乘法表
Python小代码_1_九九乘法表 max_num = 9 row = 1 while row <= max_num: col = 1 while col <= row: print(st ...
- Python IDLE 代码高亮主题
Python IDLE 代码高亮主题 使用方法: 打开C盘我的 C:\Documents and Settings\你的用户名.idlerc文件夹 里面会有一个 config-highlight.cf ...
随机推荐
- Assetbundle 打包加载场景
public class CreateAssetBundle : Editor{ // 打包unity场景文件 [MenuItem("Assets/Build AssetBundle Sce ...
- 前端循环及跳出for循环
前端循环语句与方法 while循环 语法 1.初始化变量 2.while(条件表达式){逻辑代码循环体} 执行过程: 1.执行初始化变量 2.变量是否满足条件表达式 3.满足执行循环体 4.条件不满足 ...
- Mac技术服务, 感谢 点赞打赏!
Mac技术服务 首先,非常感谢大家对我的支持和鼓励,我会继续给大家提供更好更优秀的服务 如果需要单独解决Mac问题,您也可以选择付费服务,感谢大家的理解与支持! * 普通问题/软件安装:10元--10 ...
- openwrt 运行golang 设置时区
转载自:https://www.ohyee.cc/post/note_go_read_openwrt_timezone openwrt 运行golang 时候发现打印时间错误.golang读取时区的过 ...
- Qt实现collapsePanel(折叠)功能
实践过程中,看到C#实现的CollapsePanel功能,比一般的TabWidget更加直观,充分利用了页面空间,遂感到很有兴趣,也查阅了很多资料搜索Qt在这方面的实现. 目前来说,比较常见的作法就是 ...
- dead code?
public static void main(String[] args) { DriverBase dbase = new DriverBase(); dbase.driverBase(); dr ...
- 在windows下使用dbus
介绍 DBUS是一种很方便的IPC远程调用的通信机制.可以很方便地调用其他进程提供的函数,甚至是不同计算机上提供的函数,内部通过TCP套接字进行相互通信. 不过甚至你可以修改成其他通信方式,比如USB ...
- win10 + ubuntu 下右键新建md文件(转载)
win10系统 由于前人的总结很不错,所以,在这里附上链接 原文链接 ubuntu系统(linux) 对于ubuntu系统下,这个操作更方便了. 原文链接 不仅是markdown文档,还有.doc.e ...
- 双指针_Leetcode刷题_13/100
算法解释 双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务.也可以延伸到多个数组的多个指针. 若两个指针指向同一个数组,遍历的方向相同且不会相交,则也称为滑动窗口: 若两个指针指向同一 ...
- html-list
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...