你所不知道的Python奇技淫巧13招【实用】攻略
Python一门功能强大且易学的编程语言,可以用来开发各种类型的应用程序。除了基础语法外,还有很多Python的高级技巧和奇技淫巧可以让代码更加简洁、优雅和高效。下面就是一些Python技巧和技巧,可以让你的Python编码更加高效和愉悦。
1. 交换两个变量的值
有时候我们需要将两个变量的值交换,通常的解决方法是使用一个中间变量来存储其中一个变量的值。但是,Python提供了一种更加简洁的方法,可以直接使用tuple unpacking方式完成这个任务。
a = 5
b = 10
a, b = b, a
print(a, b) # 10 5
2. 判断列表中是否有重复元素
如果你需要判断一个列表中是否有重复的元素,可以使用set数据类型,因为set数据类型的元素是唯一的。
def has_duplicates(lst):
return len(lst) != len(set(lst))
lst1 = [1, 2, 3, 4, 5]
lst2 = [1, 2, 3, 4, 4]
print(has_duplicates(lst1)) # False
print(has_duplicates(lst2)) # True
3. 从列表中找出出现次数最多的元素
如果你需要在一个列表中找出出现次数最多的元素,可以使用collections模块中的Counter类。
from collections import Counter
lst = [1, 2, 3, 4, 5, 1, 2, 1, 4, 5, 5]
counter = Counter(lst)
most_common = counter.most_common(1)
print(most_common) # [(5, 3)]
4. 比较两个文件是否相同
如果你需要比较两个文件是否相同,可以使用Python标准库中的filecmp模块。
import filecmp
result = filecmp.cmp('file1.txt', 'file2.txt')
if result:
print('文件内容相同')
else:
print('文件内容不相同')
5. 统计字符串中字母的出现次数
如果你需要统计一个字符串中每个字母出现的次数,可以使用collections模块中的defaultdict类。
from collections import defaultdict
s = 'hello, world!'
d = defaultdict(int)
for c in s:
d[c] += 1
print(dict(d)) # {'h': 1, 'e': 1, 'l': 3, 'o': 2, ',': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1, '!': 1}
6. 从list中选择n个元素的所有组合
如果你需要从一个list中选择n个元素的所有组合,可以使用itertools模块中的combinations函数。
from itertools import combinations
lst = [1, 2, 3, 4]
for i in range(1, len(lst) + 1):
for comb in combinations(lst, i):
print(comb)
7. 让Python脚本在后台运行
如果你需要让Python脚本在后台运行,可以使用nohup命令。
nohup python3 script.py &
8. 执行外部命令
如果你需要执行一些外部命令,可以使用subprocess模块。
import subprocess
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)
9. 在for循环中使用enumerate函数
如果你需要在for循环中得到每个元素的索引和值,可以使用enumerate函数。
lst = ['a', 'b', 'c']
for i, value in enumerate(lst):
print(i, value)
10. 从二维列表中抽取某个元素的所有值
如果你需要从一个二维列表中抽取某个元素的所有值,可以使用列表推导式。
lst = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
result = [row[1] for row in lst]
print(result) # [2, 5, 8]
11. 计算两个日期之间的天数
如果你需要计算两个日期之间的天数,可以使用datetime模块中的date对象。
from datetime import date
d1 = date(2020, 1, 1)
d2 = date(2020, 1, 10)
delta = d2 - d1
print(delta.days) # 9
12. 生成器表达式
如果你需要使用列表推导式来生成一个列表,但是列表太大,不适合存储在内存中,可以使用生成器表达式。
result = sum(x ** 2 for x in range(10))
print(result) # 285
13. 在Python中使用sorted函数
如果你需要对一个序列进行排序,可以使用Python中的sorted函数。
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
result = sorted(set(lst))
print(result) # [1, 2, 3, 4, 5, 6, 9]
以上就是这13个实用的Python技巧和技巧,希望对你有所帮助。