非常有用的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 ...
随机推荐
- [BOM]打包代码前,快速去除前端日志
一般开发时使用console.log() 方法.于是可以在js文件的最开头加上: console.log = function(){}
- Java-AES256加密Util
1 public class AES256Util { 2 3 /** 4 * 密钥, 256位32个字节 5 */ 6 public static final String DEFAULT_SECR ...
- 常用的js优秀框架个人记录
一.树框架 zTree http://www.treejs.cn/
- Leetcode习题集-链表
这里记录一些我刷题的思路方便之后进行复习重温,同时也方便进行添加 P141-环形链表 class Solution { public: bool hasCycle(ListNode *head) { ...
- Edge浏览器相关
Ctrl+T 新建页面 Ctrl+W 关闭页面 不可复制的页面,前加read: 若是不可访问 变read://http:// 阅读可翻译,也可有图片字典 还可用插件: 截图软件:Snipaste 微 ...
- 前端vue框架上手记录
---恢复内容开始--- Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供: 通过 @vue/cli 搭建交互式的项目脚手架. 通过 @vue/cli + @vue/cli-se ...
- vue后台管理系统——订单管理模块
电商后台管理系统的功能--订单管理模块 1. 订单管理概述 订单管理模块用于维护商品的订单信息, 可以查看订单的商品信息.物流信息,并且可以根据实际的运营情况对订单做适当的调整. 2. 订单列表 在c ...
- linux分区增加硬盘空间
https://blog.csdn.net/netgc/article/details/119978449
- delete、truncate、drop的区别
delete:只删除数据,不删除结构.删除的数据存储在系统回滚段中,可以回滚.不会自动提交事务. 在InnoDB中,delete不会真的把数据删除,mysql实际上只是给删除的数据打了个标记为已删除, ...
- git 报错 incorrect username or password
如果报这个 就是用户名 或密码错误 添加个正确的凭据就好了