Python越来越流行,因为它不但强大而且很容易掌握。我使用Python开发软件已经 有几年了,但直到这半年才成为专业Python开发者。在本文中我将介绍 列表推导式、Lambda表达式、拉链函数等6个超实用的Python开发技巧。
- 字符串操作
- 列表推导式
- lambda表达式
- 映射函数
- 单行实现if、elif和else条件判断
- 拉链函数
1、字符串操作
可以使用算数表达式来操作字符串,例如 + 和 * :
1 | >>> my_string = "Hi Medium..!" |
也可以使用[::-1]
来轻松地翻转字符串,而且不局限于字符串!
1 | >>> print(my_string[::-1]) |
翻转操作可以应用于单词列表吗?当然!我们可以开发一个Yoda翻译器:
1 | >>> word_list = ["awesome", "is", "this"] |
上面我们使用.join()
方法用空格符号反向连接列表中的所有成员,最后再添加一个感叹号。
2、列表推导式
你知道吗,当我掌握这个技巧时,我感觉整个世界都变了!这种操作列表 的方式真的太强大、直观而且可读性高。
例如,假设我们有一个函数来计算输入参数的平方再加5:
1 | >>> def stupid_func(x): |
现在我们要用这个函数处理一个列表中的所有奇数序号的成员,如果你不知道 列表推导式,可能会这样来实现:
1 | >>> my_list = [1, 2, 3, 4, 5] |
但是有更简单的实现方法!
1 | >>> my_list = [1, 2, 3, 4, 5] |
列表推导式的语法是
1 | [ expression for item in list ] |
还可以使用额外的条件判断表达式:
1 | [ expression for item in list if conditional ] |
上面这个表达式实际上等价于:
1 | >>> for item in list: |
实际上你还可以进一步优化,因为我们其实不需要那个stupid_func:
1 | >>> print([x ** 2 + 5 for x in my_list if x % 2 != 0]) |
COOOOOOOOOOOOOOOOOOOOOOOOOOOL!
3、Lambda表达式
Lambda看起来有点怪异,不过和这篇文章中的其他内容一样,Lambda 超级强大,而且一旦你理解了就会发现它其实很直观。
基本上Lambda表达式就是一个匿名函数。为什么要匿名?这是因为Lambda
表达式通常应用于执行简单的操作,因此使用def
来正式定义一个函数
就显得有点累赘了。
让我们以上面的计算为例看一下Lambda的使用方法。在上面的代码中
我们使用正式的函数声明语法def stupid_func(x)
,现在让我们使用
Lambda表达式:
1 | >>> stupid_func = (lambda x : x ** 2 + 5) |
为什么要使用这么怪异的语法?Lambda的好处在于你可以执行一些简单
的操作而无需提前定义一个函数。例如,假设有一组数值,我们如何
用Python来排序?一种方法是使用sorted()
函数:
1 | >>> my_list = [2, 1, 0, -1, -2] |
sorted()
默认是按升序对列表成员排序,但是如果我们希望按成员的
平方和排序,就可以使用lambda表达式了:
1 | >>> print(sorted(my_list, key = lambda x : x ** 2)) |
4、映射函数 map
映射函数map()
可以使用指定的函数来处理像列表之类的成员序列。例如,
假设我们希望得到两个列表中对应成员的乘积的结果列表,应该怎么做?
使用Lambda表达式和映射函数就可以了!
1 | >>> print(list(map(lambda x, y : x * y, [1, 2, 3], [4, 5, 6]))) |
如果不使用Lambda和map的话,代码就没这么优雅了:
1 | >>> x, y = [1, 2, 3], [4, 5, 6] |
5、单行条件判断
在你的代码中可能会有这样的条件判断逻辑:
1 | >>> x = int(input()) |
运行上面的代码,会提示我们输入,假设输入5的话,就会显示 Duck。但是我们可以只用一行代码就实现同样的功能!
1 | print("Horse" if x >= 10 else "Duck" if 1 < x < 10 else "Baguette") |
实在是妙!
6、拉链函数 zip
上面的映射函数map()
对两个列表中并行地执行某个指定的处理函数。
拉链函数zip()
比这还要简单。
假设我们有两个列表,一个记录人名,另一个记录姓氏,那么我们应该
如何合并得到一个全名列表?答案是使用zip()
!
1 | >>> first_names = ["Peter", "Christian", "Klaus"] |
LALALA…
原文链接:Python tricks 101, what every new programmer should know.
汇智网翻译整理,转载请标明出处