每个Python开发人员应该拥有的6个实用技巧

Python已成为一种流行的编程语言 , 因为它清晰 , 通用 , 易于学习 , 并且具有用于完成不同任务的大量有用的库 。 从Web开发到数据科学和网络安全 , Python程序员的需求很高 。
但是像所有编程语言一样 , 在Python中 , 一切都取决于您(程序员) 。 您可以决定代码看起来是专业还是丑陋 。
每个Python开发人员应该拥有的6个实用技巧文章插图
幸运的是 , Python具有大量内置功能 , 可以帮助您编写优雅 , 简洁和可扩展的代码 , 这正是专业程序员所期望的 。
这是我最喜欢的一些技巧 , 我认为每个Python开发人员都应该知道 。
1.清单理解列表理解是Python的关键功能之一 , 可帮助您编写更简洁明了的代码 。 假设您要创建一个包含1到100的数字的数组 。 执行此操作的便捷方法是使用range()函数:
numbers = list(range(1, 101))
但是 , 如果您想做更复杂的事情 , 例如创建从1到100的正方形列表 , 该怎么办?在这种情况下 , 经典方法是使用for循环:
numbers = []
for i in range(1, 101):
numbers.append(i**2)
这是大多数编程语言支持的标准方式 。 但是幸运的是 , 在Python中 , 列表理解使事情变得容易得多 。 这是在列表理解模式下编写的相同代码:
numbers = [i**2 for i in range(1, 101)]
您可以使用列表推导将几个指令和表达式包装在定义列表的方括号中 。 它们比for循环更短 , 更优雅 。 在保持代码干净的同时 , 您还可以做更多的事情 。 例如 , 假设您有一个函数is_prime()来检查输入数字 , 如果它是质数则返回True 。 以下代码段通过将is_prime()条件添加到理解中来创建从1到100的素数平方的列表 。
每个Python开发人员应该拥有的6个实用技巧文章插图
2.压缩偶尔会派上用场的另一个Python功能是zip()函数 。 zip将两个或多个列表组合为一个变量 。 假设您已经收集了客户名称 , 他们的年龄和他们最喜欢的冰淇淋口味的列表 。
customers = ['John', 'Natasha', 'Eric', 'Sally']
ages = [26, 31, 39, 22]
flavors = ['cherry', 'chocolate', 'strawberry', 'lemon']
使用zip() , 您可以将所有三个列表合并为一个列表 , 其中每个条目都包含一个元组 , 该元组具有一个客户的名称 , 年龄和偏好 。
combined = zip(customers, ages, flavors)
customers_ice_cream = list(combined)
压缩数据后 , 您的customer_ice_cream列表如下所示:
[('John', 26, 'cherry'),
('Natasha', 31, 'chocolate'),
('Eric', 39, 'strawberry'),
('Sally', 22, 'lemon')]
以下是压缩列表在循环中的使用方式:
for cust in customers_ice_cream:
print("{} is {} years old and likes {}".format(*cust))
输出如下所示:
约翰26岁 , 喜欢樱桃
Natasha今年31岁 , 喜欢巧克力
埃里克(Eric)今年39岁 , 喜欢草莓
莎莉22岁 , 喜欢柠檬
3.盘点项目通常 , 您想知道某个值在列表中出现了多少次 。 例如 , 假设我们从在线调查中收集了1-10个评分列表 。 为了模拟这一点 , 我们将使用randint()函数生成一个从1到10的1,000个随机数的列表 。
每个Python开发人员应该拥有的6个实用技巧文章插图
from random import randint
ratings = [randint(1, 10) for _ in range(1,1001)]
现在 , 我们想知道列表中包含多少个每个评分 。 一种方法是使用列表的内置计数功能 。 count()获取一个值 , 并返回该值在列表中出现的次数 。
for i in range(1, 11):
print("{}: {} occurences".format(i, ratings.count(i)))
此代码产生以下输出:
1:95次
2:115次
3:111次
4:109次
5:出现81次
6:出现110次
7:出现80次
8:94次
9:出现98次
10:107次
但是 , 这仅在您事先知道列表中的值范围是什么的情况下才有效 。 如果您不知道可能的值 , 则可以使用set , 它创建另一个列表中包含的唯一项的列表 。 例如 , 如果您有一个名称列表 , 并且想知道每个名称出现了多少次 , 则可以使用以下代码 。
for name in set(names):
print("{}: {} occurences".format(name, names.count(name)))
另外 , 您可以使用Counter类 , 该类专门对列表中的值进行计数 。
from collections import Counter
ratings_count = Counter(ratings)
for rating in ratings_count:
print("{}: {} occurences".format(rating, ratings_count[rating]))
Counter提供了一些附加功能 , 例如most_common()函数 , 该功能为您提供列表中出现次数最多的值 。 例如 , 以下代码将打印出三个最受欢迎的值: