1.引言
日常工作生活中,我超级喜欢使用Python,因为它的语法很简单,使用起来很方便。我总是痴迷于使用一行代码来解决复杂的问题。当然,Python中的大多数一行代码都是用map()函数和生成式comprehensions 来实现的。这两个技巧有助于我们使用1行代码来处理各种工作.
闲话少说,我们直接开始吧… 😃
2.将列表中所有元素进行类型转换
这一条在我们对列表中所有成员元素进行类型转换时非常有用. 样例1:
list(map(int, ['1', '2', '3']))
输出:
[1, 2, 3]
样例2: 当我们想要使一个由不同类型的元素组成的列表转化为同一类型时,这一条也很有用。
list(map(float, ['1', 2, '3.0', 4.0, '5', 6]))
输出:
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
3.将整形数字所有数字之和
当我们在计算每一个整数的每个数字之和时,在C++中,我们往往使用除法和求余操作,然后再对每一位进行累加. 当然在Python中我们可以换种实现实现方式,如果我们将数字转化为字符串,那么这个问题就会变得相当简单. 我们知道字符串是可以迭代的,也就是说我们可以使用map()函数来迭代字符串中的每一个字符.代码逻辑如下:
sum_of_digits = lambda x: sum(map(int, str(x)))
print(sum_of_digits(1789))
输出:
25
4.将包含子列表的列表展开
假设我们有一个包含子列表的列表,如下:
l = [[1, 2, 3], [4, 5], [6], [7, 8], [9]]
我们希望将该列表进行展开,得到结果如下:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
我们可以想到的简单的实现方式如下:
flattened_list = []
for sublist in l:
for item in sublist:
flattened_list.append(item)
但是我们可以使用列表生成式来完成1行代码实现上述功能,代码如下:
flattened_list = [item for sublist in l for item in sublist]
举例如下:
l = [[1, 2, 3], [4, 5], [6], [7, 8], [9]]
flattened_list = [item for sublist in l for item in sublist]
print(flattened_list)
输出如下:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
5.将二维矩阵进行转置操作
这是使用zip()函数的一个很好的例子.
transpose_A = [list(i) for i in zip(*A)]
举例:
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
transpose_A = [list(i) for i in zip(*A)]
为了方便的打印转置后矩阵的结果,我们可以直接使用numpy库进行打印操作,代码如下:
import numpy as np
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(np.matrix(A))
transpose_A = [list(i) for i in zip(*A)]
print(np.matrix(transpose_A))
结果如下:
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 4 7]
[2 5 8]
[3 6 9]]
6.交换字典中的键-值
假设我们有一个职工数据存在dict里,我们需要交换键值对.
staff = {'Data Scientist': 'John', 'Django Developer': 'Jane'}
我们在Python中可以使用dict生成式来完成上述功能,代码如下:
staff = {i:j for j, i in staff.items()}
我们打印结果:
print(staff)
输出:
{'John': 'Data Scientist', 'Jane': 'Django Developer'}
7.总结
本文介绍了五个Python中使用一行代码完成日常工作中一些意想不到的功能,并给出了完整的代码实现。
您学废了吗?
关注公众号《AI算法之道》,获取更多AI算法资讯。
|