B站|公众号:啥都会一点的研究生
相关阅读
这七个100%提高Python代码性能的技巧,一定要知道
整理了几个100%会踩的Python细节坑,提前防止脑血栓
整理了十个100%提高效率的Python编程技巧,更上一层楼
Python-列表,从基础到进阶用法大总结,进来查漏补缺
Python-元组,从基础到进阶用法大总结及与列表核心区别,进来查漏补缺
Python-字典,从基础到进阶用法大总结,进来查漏补缺
Python-集合,从基础到进阶大总结,进来查漏补缺
这些包括我在内都有的Python编程陋习,趁早改掉
Python可变类型的坑,不要再踩了
列表推导式,Python中最好的特性?可读性?
元组啊,不就是不可变的列表吗?
订阅专栏 ===> Python
在阅读代码的时候经常可以看到很多单行的操作,肥肠简洁,本期就来盘点一些常用用法
值得一提的是,不要过分追求简洁而丢了可读性,不然同事容易**
1. for循环
使用列表推导式将 for 循环写在一行中
例如,要过滤掉小于 250 的值
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. while循环
该例将展示两种实现单行 While 循环的方法
#Method 1 Single Statement
while True: print(1) #infinite 1
#Method 2 Multiple Statements
x = 0
while x < 5: print(x); x= x + 1 # 0 1 2 3 4 5
3. if else语句
要在一行中编写 if-else 语句,可以使用三元运算符
下面展示3个示例,让大家清楚了解如何将三元运算符用于单行 if-else 语句
#if Else In a single line.
#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") # Data STUDIO
#Example 3 only if
if 3 > 2: print("Exactly") # Exactly
4. 合并字典
这里介绍两种合并字典的方法
# Merging dictionaries in one line
d1 = {
'A': 1, 'B': 2 }
d2 = {
'C': 3, 'D': 4 }
#Method1
d1.update(d2)
print(d1) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
#Method2
d3 = {
**d1, **d2}
print(d3) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
5. 单行函数
有两种方法可以在一行中实现定义一个函数
在第一种方法中,使用与三元运算符或单行循环方法相同的函数定义
第二种方法是使用 lambda 来定义函数
#Function in one line
#Method1
def fun(x): return True if x % 2 == 0 else False
print(fun(2)) # False
#Method2
fun = lambda x : x % 2 == 0
print(fun(2)) # True
print(fun(3)) # False
6. 递归
该例展示如何在一行中使用递归,使用单行函数定义和单行 if-else
查找斐波那契数列
# Single-line recursion
#Fibonaci Single-line recursion example
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
7. 异常处理
使用异常处理来处理 Python 运行时的错误,常规的可以编写try except语句
使用 exec() 语句也可以做到这一点
# Exception handling in one line
#Original method
try:
print(x)
except:
print("Error")
#Single line way
exec('try:print(x) \nexcept:print("Error")') # Error
8. 将列表转换为字典
使用enumerate() 函数在一行中将列表转换为字典
将列表传递给 enumerate() 并使用 dict() 最终输出转换为字典格式
# Dictionary in one line
mydict = ["John", "Peter", "Mathew", "Tom"]
mydict = dict(enumerate(mydict))
print(mydict) # {0: 'John', 1: 'Peter', 2: 'Mathew', 3: 'Tom'}
9. 多变量赋值
Python 允许在一行中进行多个变量的赋值,也就是解包
#Multiple variable assignments in one line.
#Single-line method
x = 5
y = 7
z = 10
print(x , y, z) # 5 7 10
#Single line way
a, b, c = 5, 7, 10
print(a, b, c) # 5 7 10
10. 在一行中交换值
在很多编程语言中总是需要第三个变量名 temp 来保存交换后的值
而在Python中可以轻松的做到
#Swap values in one line
#Single-line method
v1 = 100
v2 = 200
temp = v1
v1 = v2
v2 = temp
print(v1, v2) # 200 100
# One-line value swapping
v1, v2 = v2, v1
print(v1, v2) # 200 100
11. 排序
排序是编程中的常见问题,Python 有很多内置方法来解决
# Sort in one line
mylist = [32, 22, 11, 4, 6, 8, 12]
# Method1
mylist.sort()
print(mylist) # # [4, 6, 8, 11, 12, 22, 32]
print(sorted(mylist)) # [4, 6, 8, 11, 12, 22, 32]
12. 类
lambda与namedtuple
# One-line class
#Regular way
class Emp:
def __init__(self, name, age):
self.name = name
self.age = age
emp1 = Emp("a44", 22)
print(emp1.name, emp1.age) #
#Single line way
#Method 1 Lambda with Dynamic Attributes
Emp = lambda:None; Emp.name = "a44"; Emp.age = 22
print(Emp.name, Emp.age) #
#Method 2
from collections import namedtuple
Emp = namedtuple('Emp', ["name", "age"]) ("a44", 22)
print(Emp.name, Emp.age)
13. 分号
# One-line semicolon
# exsample 1
a = "Python"; b = "Programming"; c = "languages"; print(a, b, c)
# print
# Python Programming languages
14. map
#One line map function
print(list(map(lambda a: a + 2, [5, 6, 7, 8, 9, 10])))
# print
# [7, 8, 9, 10, 11, 12]
15. 删除列表多个内容
使用 del 方法从列表中删除多个元素
# Deleting the Mul elements from the first row of the list
mylist = [100, 200, 300, 400, 500]
del mylist[1::2]
print(mylist) # [100, 300, 500]