在学习Python编程时,掌握一些实用的小技巧可以大大提升你的编码效率和代码质量。无论你是初学者还是有一定基础的学生,了解一些实用的Python技巧都能帮助你更好地应对编程中的各种挑战。
今天,我们将探索10个高效的Python技巧,这些技巧能够让你的代码更加简洁。掌握这些技巧后,你会发现Python的世界变得更加有趣和高效。让我们一起深入这些实用的技巧,提升你的编程技能,成为更加出色的Python开发者。
1.获取列表中n个最大或最小的元素unsetunset
- 使用heapq模块,可以帮助我们获取列表中n个最大或最小的元素。
- 假设你有一个列表 [7, 2, 5, 8, 10, 3],你想找出其中的3个最大元素和2个最小元素。
import heapq
numbers = [7, 2, 5, 8, 10, 3] # 找出3个最大元素
largest_three = heapq.nlargest(3, numbers)
print("3个最大元素:", largest_three) # 输出: [10, 8, 7] # 找出2个最小元素
smallest_two = heapq.nsmallest(2, numbers)
print("2个最小元素:", smallest_two) # 输出: [2, 3]
2.获取列表中每个元素及其对应下标unsetunset
- 使用enumerate函数,可以帮助我们获取列表中每个元素及其对应下标。当然,不仅仅是列表,对于其他可迭代对象时非常有用,这在需要同时访问元素和其索引的场景中尤其方便。
- 假设我们有一个列表 fruits,我们想要打印每个水果及其对应的下标。使用 enumerate可以很简单地实现这一目标。
fruits = ['apple', 'banana', 'cherry', 'date'] # 使用
enumerate 获取下标和元素
for index, fruit in enumerate(fruits):
print(f"索引: {index}, 水果: {fruit}") # 结果
索引: 1, 水果: apple 索引: 2, 水果: banana 索引: 3, 水果: cherry 索引: 4, 水果: date
3.简化代码(列表解析式)unsetunset
- 列表解析式(List Comprehension)是一种简洁、高效地创建列表的方式。它允许你用一行代码生成新列表,通常比使用传统的循环更简洁和直观。
- 生成一个包含 0 到 9 的平方的列表。
# 无条件
squares = [x**2 for x in range(10)]
print(squares) # 结果
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] # 待条件
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares) # 结果
[0, 4, 16, 36, 64] # 嵌套
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9] ]
flattened = [elem for row in matrix for elem in row]
print(flattened) # 结果
[1, 2, 3, 4, 5, 6, 7, 8, 9]
4.合并字典unsetunset
- {dictionary_one,dictionary_two}语法是 Python 3.5 引入的字典解包功能,用于合并字典。这个语法将两个字典合并为一个新字典,如果存在重复的键,后面的字典的值会覆盖前面的字典的值。
# 基本合并
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
merged = {**dict1, **dict2}
print(merged) # 结果
{'a': 1, 'b': 3, 'c': 4} # 合并多个字典
dict1 = {'a': 1}
dict2 = {'b': 2}
dict3 = {'c': 3}
merged = {**dict1, **dict2, **dict3}
print(merged) # 结果
{'a': 1, 'b': 2, 'c': 3}
5.三元表达式unsetunset
- 三元表达式(也称为条件表达式)是一种简洁的条件语句写法,用于在一行代码中根据条件选择一个值。Python 的三元表达式的基本语法是:
value_if_true
if condition
else value_if_false <条件为真的结果>
if <条件判断>
else <条件为假的结果>
- 假如我们有这样一个if…else…条件判断语句:
age = 20
if age >= 18:
status = 'Adult'
else:
status = 'Minor'
- 我们可以利用三元表达式,简化我们的代码。
age = 20
status = 'Adult' if age >= 18 else 'Minor'
6.匿名函数unsetunset
- 匿名函数(也称为 lambda 函数)是没有名字的函数,通常用于短小、简单的操作。Python 使用
lambda
关键字来创建匿名函数。匿名函数的语法是:
lambda arguments: expression
它有3个常见的使用场景:
1.临时性操作:当函数只需被使用一次或几次,且功能简单时,匿名函数可以减少代码量。
2.作为函数参数:常用于高阶函数(如 map、filter、sorted)中,作为参数传入。
3.简单的回调函数:在某些需要简单回调函数的场景下,匿名函数比命名函数更为简洁。
- 这里我们简单介绍一下它的基本用法。
# 匿名函数:计算两个数的和
add = lambda x, y: x + y
result = add(5, 3)
print(result) # 输出
8
7.计算元素的累积unsetunset
- reduce 是 Python 的 functools模块中的一个函数,用于对序列的所有元素进行累积操作。它通过反复应用一个二元操作函数,将序列缩减为单个值。通常情况下,reduce`和 lambda 函数组合可以使代码更简洁,但要注意代码的可读性。
- 假如有一个列表[1, 2, 3, 4, 5],我们想要计算列表的累积和。
from functools
import reduce
numbers = [1, 2, 3, 4, 5] # 使用
lambda 表达式定义二元操作函数:计算两个数的和
result = reduce(lambda x, y: x + y, numbers)
print(result) # 输出
15
8.将同一操作应用到多个元素上unsetunset
- map 是 Python 内置函数之一,用于将指定函数应用到可迭代对象的每一个元素上,并返回一个迭代器,该迭代器生成函数处理后的结果。它可以结合 lambda 表达式和多个可迭代对象来实现更复杂的处理逻辑。返回的是一个迭代器,所以通常需要使用 list 或 tuple函数将其转换为可查看的形式。
# 基本用法
# 定义一个函数,将一个数字平方
def square(x):
return x * x
numbers = [1, 2, 3, 4, 5]
# 使用 map 将 square 函数应用到 numbers 列表的每一个元素上
result = map(square, numbers) # 将结果转换为列表并输出
print(list(result)) # 输出 [1, 4, 9, 16, 25]
# 使用 lambda 表达式
numbers = [1, 2, 3, 4, 5]
result = map(lambda x: x ** 3, numbers) # 将结果转换为列表并输出
print(list(result)) # 输出 [1, 8, 27, 64, 125] # 多个可迭代对象
def add(x, y):
return x + y
numbers1 = [1, 2, 3, 4]
numbers2 = [5, 6, 7, 8] # 使用 map 将 add 函数应用到
numbers1 和 numbers2 列表的每一对元素上
result = map(add, numbers1, numbers2) # 将结果转换为列表并输出
print(list(result)) # 输出 [6, 8, 10, 12]
9.筛选符合特定条件的元素unsetunset
- filter 函数用于从可迭代对象中过滤出符合特定条件的元素。它接受两个参数:一个函数和一个可迭代对象。函数应用于可迭代对象的每一个元素,只有当函数返回 True时,元素才会被包含在结果中。它返回一个迭代器,需要通过 list或 tuple 转换为具体的列表或元组来查看结果。可以与 lambda表达式结合使用,以简化条件定义。
# 基本用法
def is_even(x):
return x % 2 == 0
numbers = [1, 2, 3, 4, 5, 6] # 使用 filter 函数将 is_even 函数应用到 numbers 列表中
result = filter(is_even, numbers) # 将结果转换为列表并输出
print(list(result)) # 输出 [2, 4, 6] # 使用 lambda 表达式
numbers = [5, 12, 8, 21, 15, 3] # 使用 filter 函数和 lambda 表达式
result = filter(lambda x: x > 10, numbers) # 将结果转换为列表并输出
print(list(result)) # 输出 [12, 21, 15] # 过滤字符串列表
def long_string(s):
return len(s) > 3
words = ["cat", "dog", "elephant", "ant"] # 使用 filter 函数过滤出长度大于 3 的字符串
result = filter(long_string, words) # 将结果转换为列表并输出
print(list(result)) # 输出 ['elephant']
10.将二维列表拉伸为一维度列表unsetunset
- 将二维列表(即列表的列表)展平成一维列表是一个常见的操作。
# 使用列表推导式
two_d_list = [[1, 2, 3], [4, 5], [6, 7, 8]] # 使用列表推导式将二维列表展平成一维列表
one_d_list = [item for sublist in two_d_list for item in sublist]
print(one_d_list) # 输出 [1, 2, 3, 4, 5, 6, 7, 8]
# 使用 itertools.chain
import itertools
two_d_list = [[1, 2, 3], [4, 5], [6, 7, 8]] # 使用 itertools.chain 将二维列表展平成一维列表
one_d_list = list(itertools.chain.from_iterable(two_d_list))
print(one_d_list) # 输出 [1, 2, 3, 4, 5, 6, 7, 8]
总结
- 最后希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!
文末福利
- 最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】领取!
- ① Python所有方向的学习路线图,清楚各个方向要学什么东西
- ② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
- ③ 100多个Python实战案例,学习不再是只会理论
- ④ 华为出品独家Python漫画教程,手机也能学习