page contents

Python教程—6个必会的超实用Python开发技巧!

Python越来越流行,因为它不但强大而且很容易掌握。在本文中我将介绍列表推导式、Lambda表达式、拉链函数等6个超实用的Python开发技巧。

attachments-2024-12-3YA0o61E676e05c3be91c.pngPython越来越流行,因为它不但强大而且很容易掌握。在本文中我将介绍列表推导式、Lambda表达式、拉链函数等6个超实用的Python开发技巧。


  • 字符串操作

  • 列表推导式

  • lambda表达式

  • 映射函数

  • 单行实现if、elif和else条件判断

  • 拉链函数

1、字符串操作

可以使用算数表达式来操作字符串,例如 + 和 * :

1
2
3
4
5
6
>>> my_string = "Hi Medium..!"
>>> print(my_string * 2)
Hi Medium..!Hi Medium..!

>>> print(my_string + " I love Python" * 2)
Hi Medium..! I love Python I love Python

也可以使用[::-1]来轻松地翻转字符串,而且不局限于字符串!

1
2
3
4
5
>>> print(my_string[::-1])
!..muideM iH>>> my_list = [1,2,3,4,5]

>>> print(my_list[::-1])
[5, 4, 3, 2, 1]

翻转操作可以应用于单词列表吗?当然!我们可以开发一个Yoda翻译器:

1
2
3
>>> word_list = ["awesome", "is", "this"]
>>> print(' '.join(word_list[::-1]) + '!')
this is awesome!

上面我们使用.join()方法用空格符号反向连接列表中的所有成员,最后再添加一个感叹号。

2、列表推导式

你知道吗,当我掌握这个技巧时,我感觉整个世界都变了!这种操作列表 的方式真的太强大、直观而且可读性高。

例如,假设我们有一个函数来计算输入参数的平方再加5:

1
2
>>> def stupid_func(x):
>>> return x**2 + 5

现在我们要用这个函数处理一个列表中的所有奇数序号的成员,如果你不知道 列表推导式,可能会这样来实现:

1
2
3
4
5
6
7
>>> my_list = [1, 2, 3, 4, 5]
>>> new_list = []
>>> for x in my_list:
>>> if x % 2 != 0:
>>> new_list.append(stupid_func(x))
>>> print(new_list)
[6, 14, 30]

但是有更简单的实现方法!

1
2
3
>>> my_list = [1, 2, 3, 4, 5]
>>> print([stupid_func(x) for x in my_list if x % 2 != 0])
[6, 14, 30]

列表推导式的语法是

1
[ expression for item in list ]

还可以使用额外的条件判断表达式:

1
[ expression for item in list if conditional ]

上面这个表达式实际上等价于:

1
2
3
>>> for item in list:
>>> if conditional:
>>> expression

实际上你还可以进一步优化,因为我们其实不需要那个stupid_func:

1
2
>>> print([x ** 2 + 5 for x in my_list if x % 2 != 0])
[6, 14, 30]

COOOOOOOOOOOOOOOOOOOOOOOOOOOL!

3、Lambda表达式

Lambda看起来有点怪异,不过和这篇文章中的其他内容一样,Lambda 超级强大,而且一旦你理解了就会发现它其实很直观。

基本上Lambda表达式就是一个匿名函数。为什么要匿名?这是因为Lambda 表达式通常应用于执行简单的操作,因此使用def来正式定义一个函数 就显得有点累赘了。

让我们以上面的计算为例看一下Lambda的使用方法。在上面的代码中 我们使用正式的函数声明语法def stupid_func(x),现在让我们使用 Lambda表达式:

1
2
3
>>> stupid_func = (lambda x : x ** 2 + 5)
>>> print([stupid_func(1), stupid_func(3), stupid_func(5)])
[6, 14, 30]

为什么要使用这么怪异的语法?Lambda的好处在于你可以执行一些简单 的操作而无需提前定义一个函数。例如,假设有一组数值,我们如何 用Python来排序?一种方法是使用sorted()函数:

1
2
3
>>> my_list = [2, 1, 0, -1, -2]
>>> print(sorted(my_list))
[-2, -1, 0, 1, 2]

sorted()默认是按升序对列表成员排序,但是如果我们希望按成员的 平方和排序,就可以使用lambda表达式了:

1
2
>>> print(sorted(my_list, key = lambda x : x ** 2))
[0, -1, 1, -2, 2]

4、映射函数 map

映射函数map()可以使用指定的函数来处理像列表之类的成员序列。例如, 假设我们希望得到两个列表中对应成员的乘积的结果列表,应该怎么做?使用Lambda表达式和映射函数就可以了!

1
2
>>> print(list(map(lambda x, y : x * y, [1, 2, 3], [4, 5, 6])))
[4, 10, 18]

如果不使用Lambda和map的话,代码就没这么优雅了:

1
2
3
4
5
6
>>> x, y = [1, 2, 3], [4, 5, 6]
>>> z = []
>>> for i in range(len(x)):
>>> z.append(x[i] * y[i])
>>> print(z)
[4, 10, 18]

5、单行条件判断

在你的代码中可能会有这样的条件判断逻辑:

1
2
3
4
5
6
7
>>> x = int(input())
>>> if x >= 10:
>>> print("Horse")
>>> elif 1 < x < 10:
>>> print("Duck")
>>> else:
>>> print("Baguette")

运行上面的代码,会提示我们输入,假设输入5的话,就会显示 Duck。但是我们可以只用一行代码就实现同样的功能!

1
print("Horse" if x >= 10 else "Duck" if 1 < x < 10 else "Baguette")

实在是妙!

6、拉链函数 zip

上面的映射函数map()对两个列表中并行地执行某个指定的处理函数。拉链函数zip()比这还要简单。

假设我们有两个列表,一个记录人名,另一个记录姓氏,那么我们应该 如何合并得到一个全名列表?答案是使用zip()

1
2
3
4
>>> first_names = ["Peter", "Christian", "Klaus"]
>>> last_names = ["Nistrup", "Smith", "Jensen"]
>>> print([' '.join(x) for x in zip(first_names, last_names)])
['Peter Nistrup', 'Christian Smith', 'Klaus Jensen']

LALALA…

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2024-12-27 09:41
  • 阅读 ( 47 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1658 篇文章

作家榜 »

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