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