可现学现用之10个Python技术
布加迪编译   51CTO   2020-01-15

可现学现用之10个Python技术

【51CTO.com快译】据Stack Overflow声明,Python是增强最快的编程语言。《福布斯》的流行文章称,Python去年的增强幅度高达456%。Netflix采用Python,IBM采用Python此外成百上千家商厦都在采取Python。别忘了Dropbox。Dropbox也是用Python付出的。据Dice的研讨显示,Python也是热点的必不可少技能之一;副《编程语言人气指数》观看,他也是世界上最受欢迎的编程语言。

与其他编程语言相比,Python具有的组成部分优点包括:

  • 与第一的阳台和操作系统兼容
  • 有成千上万开源框架和工具
  • 可读且可保护的编码
  • 强有力的正式库
  • 专业的统考驱动型开发
  • 本文将介绍10个实用的编码技巧,它们可帮助你成功日常任务。

    1. 联网字符串

    你需要连接字符串列表时,可以通过逐个添加每个元素、采用for loop来促成此目的。但这么做效率很低,列表很长的话更是如此。在Python官方,字符串不可变,故此对于每一对连接而言,必须将控制字符串复制到新字符串中。

    一种更好的主意是采取join()函数,如下所示: 

         
    1. characters = ['p''y''t''h''o''n' 
    2. word = "".join(characters)  
    3. print(word) # python 

    2. 采用列表推导

    列表推导用于从其它可迭代对象(iterable)创造新列表。列表推导返回列表时,它们由包含表达式的方括号组成,该表达式针对每个元素连同for loop加以执行,以便对每个元素执行迭代处理。列表推导速度更快,因为他针对Python诠释器进行了多元化,以便循环期间发现可预测的全封闭式。

    比如,假设使用列表推导来查找前五个整数的平方。 

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

    如今,假设使用列表推导从两个列表中寻找通用数字: 

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

    3. 用enumerate()拓展迭代

    enumerate()办法为可迭代对象添加一个计数器,并以枚举对象的样式返回。

    不妨解决通常名为Fizz Buzz题材的经典编码面试问题。

    编纂一个程序来打印输出列表中的数字;如果是“3”的倍数,进出口“fizz”,而不是出口数字;如果是“5”的倍数,进出口“buzz”;如果同时是3和5的倍数,进出口“fizzbuzz”。 

         
    1. numbers = [30, 42, 28, 50, 15]  
    2. for i, num in enumerate(numbers):  
    3. if num % 3 == 0 and num % 5 == 0:  
    4. numbers[i] = 'fizzbuzz'  
    5. elif num % 3 == 0:  
    6. numbers[i] = 'fizz'  
    7. elif num % 5 == 0:  
    8. numbers[i] = 'buzz'  
    9. print(numbers) # ['fizzbuzz''fizz', 28, 'buzz''fizzbuzz'

    4. 拍卖列表时采用zip

    假设你把赋予一项任务,统一长度相同的多个列表,并复印输出结果?同样,有一种更适用的主意获得所需的结果,只需使用zip(),如以下代码所示: 

         
    1. countries = ['France''Germany''Canada' 
    2. capitals = ['Paris''Berlin''Ottawa' 
    3. for country, capital in zip(countries,capitals):  
    4. print(country, capital) # France Paris  
    5. Germany Berlin  
    6. Canada Ottawa 

    5. 采用itertools

    Python itertools模块是用于处理迭代器(iterator)的系列工具。迭代器有多个工具可用于生成输入数据的可迭代对象序列。此地以itertools.combinations()为例。itertools.combinations()用于构建组合。该署也是考上值的可能性分组。

    不妨举一个具体例子来阐明上面这点。

    假设四支球队参加比赛。在半决赛阶段,每支球队与另外每支球队对抗。你的天职是为双方对立的每支球队排出所有可能的结合。

    不妨看一下以下代码: 

         
    1. import itertools  
    2. friends = ['Team 1''Team 2''Team 3''Team 4' 
    3. 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()以及该模块中的其他函数。想了解更完整的情节,参阅这篇教程(https://medium.com/@jasonrigden/a-guide-to-python-itertools-82e5a306cdf8)。

    6. 采用Python聚拢

    Python聚拢是容器数据类型,即列表、组集、元组和字典。聚拢模块提供了高性能的多寡类型以改进你的编码,大妈简化任务。聚拢模块提供了很多函数。我在此地将使用Counter()函数。

    Counter()函数拿来可迭代对象(比如列表或元组)此后归来Counter Dictionary。字典的键将是可迭代对象中的独特元素,而每个键的值将是可迭代对象中的元素计数。

    想创建counter目标,名将可迭代对象(列表)传递给Counter()函数,如以下代码所示: 

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

    想了解更完整的情节,参阅我之Python聚拢教程(https://towardsdatascience.com/a-hands-on-guide-to-python-collections-aa350cb399e3)。

    7. 名将两个列表转换成字典

    假设我们有两个列表,一度列表包含学生的姓名,其次个列表包含学生的分数。不妨看看如何将这两个列表转换成一个字典。采用zip函数,可以运用以下代码完成此操作: 

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

    8. 采用Python玉器

    玉器函数让你可以声明行为类似迭代器的函数。它们让程序员能够以快速、大概和简单之措施转变迭代器。不妨举例解释这个概念。

    假设你需要为前100000000个圆满平方数求总和,副1起来。

    只是看起来很简单?采用列表推导很容易做到这一点,但问题是考上量很大。不妨看看以下代码: 

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

    增长需要求和的全面平方数时,咱们意识到:出于较长的算计时间,其一艺术行不通。此刻Python玉器可助一臂之力。名将方括号换成圆括号后,咱们将列表推导变成了生成器表达式。如今不妨计算所花的年华: 

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

    可以看出,所花的年华已大幅缩编。如果是更庞大的涌入,其一意义会更明显。

    9. 副函数返回多个值

    Python能够从函数调用返回多个值,这是不少其他流行的编程语言缺少的效应。在这种情况下,回到值应是逗号分隔的值列表,下一场Python结构一个元组并将军他返回给调用方。 不妨看看以下代码: 

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

    10. 采用sorted()函数

    Python官方对其它序列进行排序很容易,只需使用内置方法sorted(),他为你成功了方方面面棘手的上班。sorted()可对其它序列(列表和元组)拓展排序,前后返回元素以排序的措施显示的列表。不妨看看对数字列表进行升序排序。

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

    另举一个例子,对字符串列表进行降序排序。

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

    原文标题:10 Python Tips and Tricks You Should Learn Today,笔者:Abhinav Sagar

    【51CTO来稿,合作站点转载请注明原文译者和出处为51CTO.com】

    【义务编辑: 庞桂玉 TEL:(010)68476606】

     

    分享到朋友圈 分享到微博
  • Python
  • 编程语言
  • 代码
  • 相关推荐

    简书不如知乎?Python爬30W数量,BI可视化分析之后,告知你答案

    2020-01-18 10:27:07

    在Kubernetes上实现四化服务器化的五种方法

    2020-01-18 09:44:35

    5大代码规则,守护程序猿世界之爱与和平!

    2020-01-18 09:11:03

    Copyright © 2005-2020 51CTO.COM 必发娱乐登入
    情节话题
    必发娱乐登入 移步 传感器 系统 安全 网络 必发娱乐登录 虚拟化 付出
    热门产品
    51CTO必发娱乐登录 51CTO高招 移步开发者服务联盟网+ 51CTO博客 WOT碰头会
  •