要了解的10个Python技巧

根据StackOverflow的介绍,Python是增长最快的编程语言。 例如,《 福布斯》的一份报告说,Python的使用量增长了456%。 Netflix,IBM和全球数千家公司都使用Python。 让我们不要忘记Dropbox。 该公司的服务也使用Python编写。 根据Dice的研究,当今对Python领域的知识非常需求,并且编程语言流行指数表明Python是当今世界上最受欢迎的语言。 如果将Python与其他语言进行比较,事实证明它具有以下优势:

  1. 与绝大多数平台和操作系统兼容。
  2. 存在许多开源框架和工具。
  3. 易于阅读和维护的代码。
  4. 可靠的标准库。
  5. 通过测试制定标准的机制。



Python技巧


在这里,我想提醒您注意有关Python编程的10条有用技巧。 他们非常有能力为您的日常工作提供帮助。

▍1。 字符串串联


如果需要连接字符串列表,则可以在for循环中执行此操作,一次向最终结果添加一行。 但是,这种方法效率很低,特别是如果列表足够长的话。 在Python中,字符串是不可变的实体。 结果,每个字符串串联操作意味着您需要将几行复制到新行。

解决此问题的更有效方法是使用join()函数:

 characters = ['p', 'y', 't', 'h', 'o', 'n'] word = "".join(characters) print(word) # python 

▍2。 使用列表生成器


列表生成器用于从其他可迭代对象创建新列表。 由于生成器返回列表,因此其描述是针对列表中每个元素执行的表达式,并用方括号括起来。 这也包括for遍历每个元素的for循环的描述。 由于Python解释器针对遍历列表时重复的模板进行了优化,因此列表生成器使您可以加快列表的处理速度。

例如,考虑使用列表生成器查找前五个整数的平方:

 m = [x ** 2 for x in range(5)] print(m) # [0, 1, 4, 9, 16] 

现在,我们找到出现在两个列表中的每个列表中的数字:

 list_a = [1, 2, 3, 4] list_b = [2, 3, 4, 5] common_num = [a for a in list_a for b in list_b if a == b] print(common_num) # [2, 3, 4] 

▍3。 使用枚举()遍历列表


enumerate()方法将数字添加到迭代的集合中,并返回一个对象,该对象生成由元素索引和该元素本身组成的成对元素。

让我们解决采访中提供的经典FizzBu​​zz问题。 这是完成此任务的条件:“编写一个显示数字列表的程序。 在这种情况下,将显示嘶嘶声,而不是3的倍数,而不是5的倍数-嗡嗡声,而不是3和5的倍数-嘶嘶声。

 numbers = [30, 42, 28, 50, 15] for i, num in enumerate(numbers):    if num % 3 == 0 and num % 5 == 0:       numbers[i] = 'fizzbuzz'    elif num % 3 == 0:       numbers[i] = 'fizz'    elif num % 5 == 0:       numbers[i] = 'buzz' print(numbers) # ['fizzbuzz', 'fizz', 28, 'buzz', 'fizzbuzz'] 

▍4。 将zip()与列表一起使用


假设您需要组合几个相同长度的列表并显示结果列表。 与其他情况一样,可以解决类似的问题,可以说是“在额头上”,或者可以使用通用zip()函数之类的方法:

 countries = ['France', 'Germany', 'Canada'] capitals = ['Paris', 'Berlin', 'Ottawa'] for country, capital in zip(countries,capitals):    print(country, capital) # France Paris                              Germany Berlin                              Canada Ottawa 

5英镑 使用itertools模块


itertools Python模块是一组用于处理迭代器的工具。 该模块包括许多用于生成各种序列的工具。 在这里,作为示例,考虑itertools.combinations()方法。 此方法用于创建组合。 还有一些用于对输入值进行分组的工具。

为了理解以上内容,让我们考虑一个真实的例子。

想象一下,在某个锦标赛中有四支球队参加。 在小组赛中,举行每支球队与其他每支球队的比赛。 您的任务是生成将互相对抗的团队的所有可能组合。

看下面的代码:

 import itertools friends = ['Team 1', 'Team 2', 'Team 3', 'Team 4'] list(itertools.combinations(friends, r=2)) # [('Team 1', 'Team 2'),   ('Team 1', 'Team 3'), ('Team 1', 'Team 4'), ('Team 2', 'Team 3'), ('Team 2', 'Team 4'), ('Team 3', 'Team 4')] 

在这里,您需要注意以下事实:值的顺序并不重要。 由于组合('Team 1', 'Team 2')('Team 2', 'Team 1')代表同一对球队,因此最终名单中仅包括其中一个。 同样,您可以使用itertools.permutations()方法和此模块的其他方法。 有关itertools的详细指南,请参见此处

▍6。 使用Python集合


Python集合是容器数据类型。 特别是这些是列表,集合,元组,字典。 collections模块为开发人员提供了高性能的数据类型,这些数据类型有助于改进代码,使其更简洁并易于使用。 该模块包含许多有用的方法。 在这里,我们看一下Counter()方法。

此方法采用一个可迭代的对象(例如列表或元组),并返回一个字典,其中包含有关要检查的列表中不同对象的数量的信息(“计数器字典”)。 此类字典的键是可迭代对象中表示的唯一元素,而值是此类元素的数量。

要创建Counter对象,您需要将可迭代对象(例如列表)传递给Counter()方法:

 import collections count = collections.Counter(['a','b','c','d','b','c','d','b']) print(count) # Counter({'b': 3, 'c': 2, 'd': 2, 'a': 1}) 

可以在这里找到有关collections模块的详细信息。

▍7。 将两个列表转换成字典


假设我们有两个列表。 其中一个包含学生的姓名,第二个包含他们的成绩。 如何将这两个列表转换成字典? 如果我们为此使用zip()函数,则可以按以下方式解决此问题:

 students = ["Peter", "Julia", "Alex"] marks = [84, 65, 77] dictionary = dict(zip(students, marks)) print(dictionary) # {'Peter': 84, 'Julia': 65, 'Alex': 77} 

8英镑 使用生成器功能


生成器函数是行为类似于迭代器的函数。 它们使程序员可以快速轻松地创建整洁的迭代器。 考虑一个揭示这个想法的例子。

假设我们需要找到从1开始的前100,000,000个整数的平方和。

这个任务似乎很简单。 使用列表生成器可以毫无问题地解决它。 但是,这里的问题是输入数据量很大。 看下面的代码:

 import time t1 = time.clock() sum([i * i for i in range(1, 100000000)]) t2 = time.clock() time_diff = t2 - t1 print(f"It took {time_diff} Secs to execute this method") # It took 13.197494000000006 Secs to execute this method 

如果我们需要找到更多数量的平方和,那么事实证明该技术不能很好地找到它们,因为找到解决方案需要花费大量时间。 在这种情况下,Python生成器函数将为我们提供帮助。 在我们的情况下,为了从使用列表生成器切换到生成器功能,只需将生成器表达式中的方括号更改为圆括号即可。 我们这样做并找到解决问题所需的时间:

 import time t1 = time.clock() sum((i * i for i in range(1, 100000000))) t2 = time.clock() time_diff = t2 - t1 print(f"It took {time_diff} Secs to execute this method") # It took 9.53867000000001 Secs to execute this method 

如您所见,现在解决同一问题所需的时间更少。 随着输入数据的增加,这种影响将更加明显。

这是有关生成器功能的材料。

▍9。 从函数返回多个值


Python能够从一个函数返回多个值。 在其他许多流行的编程语言中都找不到。 要从一个函数返回多个值,它们必须用逗号分隔。 基于此值列表,Python将创建一个元组并将其返回到调用该函数的位置。 这是一个例子:

 def multiplication_division(num1, num2):    return num1*num2, num1/num2 product, division = multiplication_division(15, 3) print("Product =", product, "Quotient =", division) # Product = 45 Quotient = 5.0 

▍10。 使用sorted()函数


在Python中,使用内置的sorted()函数对某些数据序列进行排序非常容易,它可以解决所有相关任务。 此函数对任何序列(列表,元组)进行排序,并始终返回带有排序元素的列表。 考虑一个以升序对数字列表进行排序的示例:

 sorted([3,5,2,1,4]) # [1, 2, 3, 4, 5] 

这是一个以降序对行列表进行排序的示例:

 sorted(['france', 'germany', 'canada', 'india', 'china'], reverse=True) # ['india', 'germany', 'france', 'china', 'canada'] 

总结


本文介绍了10条有用的Python编程技巧,这些技巧在日常工作中可能会很有用。 我们希望您能从中找到有益的东西。

亲爱的读者们! 我们鼓励有经验的Python开发人员谈论他们经常使用的有用的Python功能。


Source: https://habr.com/ru/post/zh-CN479274/


All Articles