page contents

10个超级常用的 Python 技巧!好用到爆!

今天,我们将探索10个高效的Python技巧,这些技巧能够让你的代码更加简洁。掌握这些技巧后,你会发现Python的世界变得更加有趣和高效。让我们一起深入这些实用的技巧,提升你的编程技能,成为更加出色的Python开发者。

attachments-2024-09-ahNqPIu666e63a4ae8bd9.png在学习Python编程时,掌握一些实用的小技巧可以大大提升你的编码效率和代码质量。无论你是初学者还是有一定基础的学生,了解一些实用的Python技巧都能帮助你更好地应对编程中的各种挑战。

今天,我们将探索10个高效的Python技巧,这些技巧能够让你的代码更加简洁。掌握这些技巧后,你会发现Python的世界变得更加有趣和高效。让我们一起深入这些实用的技巧,提升你的编程技能,成为更加出色的Python开发者。

unsetunset

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]

unsetunset

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

unsetunset

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]

unsetunset

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}

unsetunset

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'

unsetunset

6. 匿名函数unsetunset

匿名函数(也称为 lambda 函数)是没有名字的函数,通常用于短小、简单的操作。Python 使用 lambda 关键字来创建匿名函数。匿名函数的语法是:

lambda arguments: expression

它有3个常见的使用场景:

临时性操作:当函数只需被使用一次或几次,且功能简单时,匿名函数可以减少代码量。

作为函数参数:常用于高阶函数(如 map、filter、sorted)中,作为参数传入。

简单的回调函数:在某些需要简单回调函数的场景下,匿名函数比命名函数更为简洁。

这里我们简单介绍一下它的基本用法。

# 匿名函数:计算两个数的和

add = lambda x, y: x + y


result = add(5, 3)

print(result)  # 输出 8

unsetunset

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

unsetunset

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]

unsetunset

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']
unsetunset
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编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2024-09-15 09:37
  • 阅读 ( 50 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1470 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章