17个提升Python的编码技巧,从此键盘飞起
“Python 是一种真正美妙的语言。 当有人想出一个好主意时,大约需要 1 分钟和 5 行代码来编写几乎可以满足您要求的东西。 然后只需要一个小时就可以将脚本扩展到 300 行,之后它仍然几乎可以满足您的需求。” - 杰克詹森
1. 打印N次字符串
你可能使用循环来打印 N 次字符串。 但我将向你展示了:在一小行代码中打印 N 次字符串的优美方法。
string = "Python " ntimes = string * 3 print(ntimes) # Python Python Python 复制代码
2. 函数多值返回
有时候函数需要返回多个值,我们可以用下面的方式来实现:
def MultiReturn(): return 1,2,3 a, b, c = MultiReturn() print(a,b,c) # 1 2 3 复制代码
3. 导入模块的文件路径
你知道我们可以在 Python 中获取任何导入模块的文件路径吗? 当你需要知道模块的路径时,这是一个了不起的功能。 查看以下代码示例:
import os import json print(os) # <module 'os' from '/usr/lib/python3.6/os.py'> print(json) # <module 'json' from '/usr/lib/python3.6/json/__init__.py'> 复制代码
4. 快速反转字符串
要看懂下面代码,你可能要深入了解 Python 切片操作。
string = "Python" print(string[::-1]) # nohtyP 复制代码
语法:string[start:end:stop]
- start: 开始位置,默认为 0
- end: 结束位置,默认为字符串长度
- stop: 参数可以省略,默认为 1, 可以为负数,表示倒序。
5. 多变量赋值
许多其他语言 C++、Java、JavaScript 只允许对变量进行一次赋值。 但是 Python 允许你执行多个分配,这在不同情况下非常有用。
a, b = 1, 2 print(a,b) # 1 2 复制代码
6. 去重
python 中,你不再需要循环来从列表中删除重复项,你可以使用内置函数以快速简便的方式完成此操作。 看看下面的代码。
lst1 = [1, 3, 3, 4, 5, 1] lst2 = ["A", "A", "B", "C", "D", "D"] print(set(lst1)) # {1, 3, 4, 5} print(set(lst2)) # {'A', 'B', 'C', 'D'} 复制代码
7. 格式化字符串
你通常使用 + 一元运算符来格式化字符串。 简而言之,当想将变量与字符串附加在一起时,可以使用一元运算符 + 。 但我将向你展示如何以简单快捷的方式进行这种格式化。
name = "John" age = 23 # method 1 print("My name is " + name + " and I am " + str(age)) # My name is John and I am 23 # method 2 print("My name is {0} and I am {1}".format(name, age)) # My name is John and I am 23 # method 3 print(f"My name is {name} and I am {age}") # My name is John and I am 23 复制代码
8. 初始化变量
你可以在 Python 中初始化空容器。 简而言之,可以在不分配值或填充它们的情况下声明数据结构。
lst = [] # 初始化一个空列表 dct = {} # 初始化一个空字典 tpl = () # 初始化一个空元组 set = set() # 初始化一个空集合 复制代码
9. 你的python对象占内存么?
你知道Python内置模块sys可以告诉你一个对象在python中消耗了多少内存吗?
import sys print(sys.getsizeof(1)) # 28 print(sys.getsizeof(1.0)) # 24 print(sys.getsizeof(True)) # 1 print(sys.getsizeof(None)) # 1 print(sys.getsizeof("Hello")) # 56 print(sys.getsizeof([])) # 40 print(sys.getsizeof(())) # 40 print(sys.getsizeof({})) # 40 print(sys.getsizeof(set())) # 40 复制代码
10. 反转列表
参照本文第4条,反转字符串。
lst = [1, 3, 3, 4, 5, 1] print(lst[::-1]) # [1, 5, 4, 3, 3, 1] 复制代码
11. 反转字典
我将分享一个示例代码来反转字典。 简而言之,键和值将交换它们的位置。
dict = {'x' : 1, 'y' : 2, 'z' : 3} new_dict = { value : key for key , value in dict.items()} print(new_dict) # {1: 'x', 2: 'y', 3: 'z'} ## 尝试下下面代码,有惊喜 dict = {'x' : 1, 'y' : 2, 'z' : 2} new_dict = { value : key for key , value in dict.items()} print(new_dict) # {1: 'x', 2: 'z'} 复制代码
12. 更高级的多变量赋值
本文前面,我们已经学会了如何完成多变量复制。 在这个技巧中,我们将学习多变量复制的高级方法。
a, *b, c, d = 3, 4, 5, 6, 7 print(a) # 3 print(b) # [4, 5] print(c) # 6 print(d) # 7 ## ⚠️ 尝试下下面代码 a, *b, c= 3, 4, 5, 6, 7 print(a) # 3 print(b) # [4, 5, 6] print(c) # 7 复制代码
13. 连接列表中的字符串
您可能使用循环来迭代列表并将列表的每个项连接在一起。 但是需要很多行代码才能完成。 此时可用join()方法以快速简便的方式完成此操作。
lst = ['a', 'b', 'c'] print(''.join(lst)) # abc 复制代码
14. 合并字典
dict1 = {'a' : 1, 'b' : 2} dict2 = {'c' : 3, 'd' : 4} dict3 = {**dict1, **dict2} print(dict3) # {'a': 1, 'b': 2, 'c': 3, 'd': 4} 复制代码
15. Python递归次数有限制么?
当使用递归函数时, Python其实已将默认将递归限制设置为1000,但可以通过如下代码修改其限制:
import sys current_recursion_limit = sys.getrecursionlimit() print(current_recursion_limit) # 1000 set_limit = sys.setrecursionlimit(2000) print(set_limit) # 2000 复制代码
16. 如何挑出后缀是 xls或者 xlsx 的文件?
你可能已经使用过 startwith 和 endwith 方法来搜索字符串中的前缀或者后缀。 但是你不一定知道他们可以使用多个条件。
string1 = 'abc.xls' # method 1 if string1.endswith('.xls') or string1.endswith('.xlsx'): print('Yes') # method 2 if string1.endswith(('.xls','.xlsx')): print('Yes') 复制代码
17. 学会用 in 代替多个 if 语句
a = [1, 2, 3] x = 1 # method 1 if a[0] == x or a[1] == x or a[2] == x: print('Number X is present in the list') # method 2 if x in a: print('Number X is present in the list') 复制代码
小节
上面分享的17个提供python的技巧,希望对你有所帮助!
欢迎大家点赞、收藏,支持!
#python面试##学习路径#