当前位置: 首页 > 科技观察

兵贵又快!掌握这10个Python技能,让你的代码如鱼得水

时间:2023-03-14 14:31:50 科技观察

1000个读者心中有1000个哈姆雷特,问1000个程序员“什么是最好的语言”,Java、Python、PHP、C++也有自己的立场.但要问编程语言人气指数之王王飞,还真非Python莫属。根据StackOverflow数据,Python是使用量增长最快的编程语言。根据福布斯的一份新报告,Python的使用量在去年增长了456%。Netflix、IBM和其他数百家公司都在使用Python。包括Dropbox也是python创建的。根据Dice的研究,python是世界上最热门的技能之一,根据编程语言流行指数,python也是一种非常流行的编程语言。为什么Python如此有吸引力?那是因为,与其他编程语言相比,Python具有以下五个优势:1.兼容主流平台和操作系统。2.包含许多开源框架和工具。3、编码可读、可维护4、强大的标准库5、标准的测试驱动开发低学习门槛和广阔的发展前景让Python越来越受欢迎。今天,小新继续为大家带来10个非常实用的python编码技巧,帮助大家完成日常工作。请注意查看学习~10Pythontips1.使用ZIP处理列表假设你想合并相同长度的列表并打印结果。还有一种更通用的方式,就是使用zip()函数来得到想要的结果,代码如下:countries=['France','Germany','Canada']capitals=['Paris','柏林','渥太华']forcountry,capitalinzip(countries,capitals):print(country,capitals)#FranceParisGermanyBerlinCanadaOttawa2.使用python集合Python集合是容器数据类型,即列表、集合、元组、字典。Collections模块提供高性能数据类型,可以增强您的代码,使您的工作更干净、更轻松。它还提供了许多功能,这些功能在下面使用Counter()函数进行了演示。Counter()函数接受一个可迭代对象(例如列表或元组)并返回一个计数器字典。字典的键是迭代器中唯一存在的元素,每个键的值是该元素在迭代器中出现的次数的计数。要创建一个Counter对象,将一个可迭代(列表)传递给Counter()函数,代码如下。fromcollectionsimportCountercount=Counter(['a','b','c','d','b','c','d','b'])print(count)#Counter({'b':3,'c':2,'d':2,'a':1})3.使用itertoolsPython的itertools模块是一组用于处理迭代器的工具。Itertools包含各种用于从输入数据生成可迭代结果的工具。这里我们以itertools.combinations()为例。itertools.combinations()用于构建组合。这些是输入量的可能组合。为了说明上述观点,举一个现实生活中的例子:假设有4支球队参加锦标赛,每支球队都必须在联赛阶段与其他所有球队比赛。任务是列出所有可能的参赛队伍组合。代码如下:importitertoolsfriends=['Team1','Team2','Team3','Team4']list(itertools.combinations(friends,r=2))#[('Team1','Team2'),('Team1','Team3'),('Team1','Team4'),('Team2','Team3'),('Team2','Team4'),('Team3','Team4')]需要注意的是,值的顺序无所谓。由于('Team1','Team2')和('Team2','Team1')代表同一对,因此输出列表只需要包含其中一个。同样,可以使用itertools.permutations()和此模块中的其他函数。如需更完整的参考,请查看本教程。4.从一个函数中返回多个值Python可以从一个函数调用中返回多个值,这是许多其他流行的编程语言所没有的特性。在这种情况下,返回值应该是逗号分隔的值列表,然后Python构造一个元组并将其返回给调用者。代码示例如下:defmultiplication_division(num1,num2):returnnum1*num2,num1/num2product,division=multiplication_division(15,3)print("Product=",product,"Quotient=",division)#Product=45商=5.05。使用列表推导式列表推导式用于从其他可迭代对象创建新列表。当返回列表时,列表推导式由方括号括起要为每个元素执行的表达式以及用于迭代每个元素的for循环组成。由于对python解释器进行了优化以在循环期间发现可预测的模式,因此列表推导速度更快。如下,使用列表推导计算前五个整数的平方:m=[x**2forxinrange(5)]print(m)#[0,1,4,9,16]再举个例子,使用列表推导以在列表中找到两个常见数字list_a=[1,2,3,4]list_b=[2,3,4,5]common_num=[aforainlist_aforbinlist_bifa==b]print(common_num)#[2,3,4]6。将两个列表转换为字典假设您有两个列表,一个包含学生姓名,另一个包含学生分数。使用zip函数将这两个列表转换成字典,代码如下:students=["Peter","Julia","Alex"]marks=[84,65,77]dictionary=dict(zip(students,marks))print(dictionary)#{'Peter':84,'Julia':65,'Alex':77}7.拼接字符串时,可以使用for循环逐个添加元素,但是这样很效率低下(尤其是当列表很长时)。在python中,字符串是不可变的,所以在拼接字符串的时候,必须将左右两个字符串复制成一个新的字符串。更好的方法是使用join()函数,如下所示:characters=['p','y','t','h','o','n']word="".join(characters)打印(单词)#python8。使用sorted()函数使用python中的内置函数sorted()可以轻松地对任何序列进行排序,它完成了很多艰苦的工作。sorted()对任何序列(列表、元组)进行排序并返回排序后的元素列表。按升序排列数字如下:sorted([3,5,2,1,4])#[1,2,3,4,5]按降序排列字符串如下:sorted(['france','德国','加拿大','印度','中国'],reverse=True)#['印度','德国','法国','中国','加拿大']9.使用enumerate()迭代Enumerate()方法向可迭代对象添加一个计数器并将其作为枚举对象返回。以下是一个经典的编码面试问题(通常称为FizzBuzz问题)。编写程序打印列表中的数字。如果数字是3的倍数,输出“fizz”;如果是5的倍数,输出“buzz”;如果它是3和5的倍数,则输出“fizzbuzz”。numbers=[30,42,28,50,15]fori,numenumerate(numbers):ifnum%3==0andnum%5==0:numbers[i]='fizzbuzz'elifnum%3==0:numbers[i]='fizz'elifnum%5==0:numbers[i]='buzz'print(numbers)#['fizzbuzz','fizz',28,'buzz','fizzbuzz']10。使用python生成器(generator)生成器函数允许创建类似迭代器的函数。它们允许程序员以简单快速的方式创建迭代器。让我们用一个例子来说明这个概念。假设您想从1开始对前100,000,000个完全正方形求和。看起来很简单吧?使用列表推导式很容易做到这一点,但它太过分了。下面是一个例子:t1=time.clock()sum([i*iforiinrange(1,100000000)])t2=time.clock()time_diff=t2-t1print(f"Ittook{time_diff}Secstoexecutethismethod")#Ittook13.197494000000006Secstoexecute由于需要大量计算时间,因此在增加完全平方数和时,此方法不够灵活。这就是python生成器派上用场的地方。用圆括号替换方括号后,列表推导式变为生成器表达式。现在计算花费的时间:t1=time.clock()sum((i*iforiinrange(1,100000000)))t2=time.clock()time_diff=t2-t1print(f"Ittook{time_diff}Secstoexecutethismethod")#Ittook9.53867000000001sectoexecutethis方法如上,所用时间大大减少。输入越大,减少越明显。总结:随着人工智能的逐渐升温,Python作为人工智能领域开发的首选语言,将变得越来越重要。以前“学好数理化,走遍天下都不怕”,现在可能要改口了——“学好python,走遍天下都不怕”世界各地的”。所以,你还等什么,赶快学习这10个实用的python技巧吧,相信你的日常工作会多666~