Python 实用小技巧精选收藏

简介: Python 实用小技巧精选收藏

1. 序号填充补零

>>> for i in range(12):
  'No.'+str(i+1).zfill(3)
>>> for i in range(12):
  'No.%.3d'%(i+1)
>>> for i in range(12):
  'No.{0:03}'.format(i)
'''
三种方法等效,均为:
'No.001'
'No.002'
'No.003'
'No.004'
'No.005'
'No.006'
'No.007'
'No.008'
'No.009'
'No.010'
'No.011'
'No.012'
三种方法体现了三种连接字符串的方式,其中方法三若使用多变量: 
'x={0:03} y={1} z={2}'.format(x,y,z)
'''

2. 一行代码实现斐波那契数列

>>> Fib=lambda n: ([F[0] for F in [(f[i][0], f.append((f[i][1], f[i][0]+f[i][1]))) for f in ([[1,1]],) for i in range(n)]])
>>> Fib(5)
[1, 1, 2, 3, 5]
>>> Fib(20)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
>>> Fib(12)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]
>>> Fib(20)[11]
144
# 递归式:
>>> Fib = lambda n,a=0,b=1: a if n==0 else Fib(n-1,b,a+b)
>>> Fib(12)
144
>>> fib = lambda n: 1 if n<=2 else fib(n-1) + fib(n-2)
>>> fib(12)
144

一行代码计算阶乘

>>> (lambda n: __import__('functools').reduce(int.__mul__,range(1,n+1),1))(5)
120
>>> (lambda n: __import__('functools').reduce(int.__mul__,range(1,n+1),1))(6)
720



3. 列表推导式:  (也适用字典和集合)

# 例:输出偶数列,以下两种方法等效
>>> a=[i for i in range(20) if i%2==0]
>>> b=[i*2 for i in range(10)]
>>>
>>> for i in a: print(i,end=' ')
0 2 4 6 8 10 12 14 16 18 
>>> for i in b: print(i,end=' ')
0 2 4 6 8 10 12 14 16 18 


4. for 循环不带变量,用“_”代替

>>> for _ in range(3):
  print(1)
1
1
1
# 例:初始化列表
>>> lst = []
>>> lst1 = []
>>> for _ in range(10):
  lst1.append(0)
>>> lst2 = [0 for _ in range(10)]
>>> lst1
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> lst2
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# 推荐使用:
>>> lst3 = [0]*10
>>> lst3
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


5. 若本地没有指定库则临时安装

 import os
try:
  import json
except ImportError:
  os.system('pip install json')
  import json           



6. for 循环也能和 else 搭配

for i in range(5):
  print(i,end='\t')
else:
  print(i+1,end='\n\n\n')
''' 
0 1 2 3 4 5
注:两者是顺序关系,若for句块中有break等跳出,则else句块执行不到
''' 



7. 链式比较,可以和数学题中的写法一样: 0<a<5

>>> a=5
>>> 1<a<10
True
>>> 1==a<=5
False
>>> 1<=a==5
True
>>> 5==a<10
True
>>> a=6
>>> 5==a<10
False
>>> 0<a>1
True
# 逻辑值是前后两个等式的与运算


8. 多个比较,可以用 all() any() 代替 and or 表示全部成立和只要有一个成立

>>> a,b,c=1,5,8
>>> any([a>0,b>a,c>b])
True
>>> all([a>0,b>a,c>b])
True
>>> any([a>0,b<a,c<b])
True
>>> all([a>0,b<a,c<b])
False
>>> 



9. 多个or比较,可以用in代替

>>> a=0
>>> if a in {1,2,3}:
  print(1)
else:
  print(0)
0
>>> if a in [1,2,3]:
  print(1)
else:
  print(0)
0
'''
1. 等价于:
if a==1 or a==2 or a==3:
    print(1)
else:
    print(0)
2. in 后面用 [] {} 都可以
'''



10. 查找列表中出现次数最多(最少)的元素

>>> a=[1,2,3,1,2,2,2,4]
>>> max(set(a),key=a.count)
2
>>> min(set(a),key=a.count)
3
# 若次数一样多,则返回首次出现的元素



11. 用列举函数enumerate遍历列表、字典的元素序号

>>> m=[0,1,3,2,3,6,1,3]
>>> for i,n in enumerate(m):
  print(i+1,':',n)
1 : 0
2 : 1
3 : 3
4 : 2
5 : 3
6 : 6
7 : 1
8 : 3
>>> d={'a':97,'b':98,'c':99,'d':100}
>>> for i,k in enumerate(d):
  print(i+1,':',k,'=',d[k])
1 : a = 97
2 : b = 98
3 : c = 99
4 : d = 100



12. 三目操作符用于选择函数

>>> def add(a,b):return a+b
>>> sub=lambda a,b:a-b
>>> a,b=5,10
>>> (sub if a>b else add)(a,b)
15


函数表达式放进字典里:

dic = {
    "add": lambda x, y: x + y,
    "sub": lambda x, y: x - y
}
a,b=5,3
print((dic['add'] if a>b else dic['sub'])(a,b))
a,b=3,5
print((dic['add'] if a>b else dic['sub'])(a,b))
'''
8
-2
'''


目录
相关文章
|
4月前
|
存储 索引 Python
Python小技巧:单下划线 '_' 原创
Python小技巧:单下划线 '_' 原创
78 3
|
8月前
|
机器学习/深度学习 C++ Python
Python小技巧:蛇形方阵
Python小技巧:蛇形方阵
|
4月前
|
开发者 索引 Python
7个提升python编程的小技巧
7个提升python编程的小技巧
54 1
7个提升python编程的小技巧
|
4月前
|
开发工具 git Python
Python小技巧:满意的逗号放置
Python小技巧:满意的逗号放置
25 4
|
8月前
|
Python
Python小技巧:一种字符串的排序方式
该文介绍了如何对包含数字的字符串列表进行特定排序。首先,示例了一个初始问题,使用Python内置的`sorted()`函数未能达到预期(按数字部分升序排序)。然后,文章提出通过自定义排序键`sort_key`来解决,利用正则表达式提取字符串尾部数字并进行排序。进一步,文章扩展到处理如&#39;nxxx_name_nxxx&#39;格式的字符串,通过给前缀和后缀数字赋予不同权重进行复合排序,展示了如何实现先按前缀、再按后缀排序的功能。提供的代码示例成功地完成了任务。
|
4月前
|
存储 索引 Python
Python小技巧:单下划线 ‘_‘
Python小技巧:单下划线 ‘_‘
18 0
|
4月前
|
SQL 关系型数据库 MySQL
Python小技巧——将CSV文件导入到MySQL数据库
Python小技巧——将CSV文件导入到MySQL数据库
182 0
|
5月前
|
索引 Python
干货!20个Python使用小技巧
干货!20个Python使用小技巧
69 0
|
6月前
|
Python
Python小技巧:一种字符串的排序方式
Python小技巧:一种字符串的排序方式
58 0
|
7月前
|
Python
Python一些实用小技巧
Python一些实用小技巧
23 0