【.com快速翻译】根据StackOverflow,Python是增长最快的编程语言。《福布斯》的最新文章说Python去年增长了456%。Netflix使用Python,IBM使用Python,还有数百家其他公司使用Python。不要忘记Dropbox。Dropbox也是用Python开发的。根据Dice研究,Python也是热门的必备技能之一;从《编程语言人气指数》来看,它也是世界上最流行的编程语言。Python相对于其他编程语言的一些优势包括:与主要平台和操作系统的兼容性有许多开源框架和工具可读和可维护的代码强大的标准库标准的测试驱动开发本文将介绍10个实用的编码技巧帮助您完成日常任务。1.连接字符串当你需要连接一个字符串列表时,你可以通过使用for循环一个一个地添加每个元素来完成。但这样做效率低下,尤其是在列表很长的情况下。在Python中,字符串是不可变的,因此对于每对连接,必须将左右字符串复制到一个新字符串中。更好的方法是像这样使用join()函数:characters=['p','y','t','h','o','n']word="".join(characters)打印(单词)#python2。使用列表推导式列表推导式用于从其他可迭代对象创建新列表。当列表理解返回列表时,它们由方括号组成,其中包含一个针对每个元素执行的表达式以及一个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]3。使用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']4。处理列表时使用zip假设你的任务是合并多个相同长度的列表,并打印出结果?同样,有一种更通用的方法可以获得所需的结果,只需使用zip(),如以下代码所示:countries=['France','Germany','Canada']capitals=['Paris','Berlin','Ottawa']forcountry,capitalinzip(countries,capitals):print(country,capitals)#FranceParisGermanyBerlinCanadaOttawa5.使用itertoolsPythonitertools模块是一组用于处理迭代器的工具。迭代器具有多种功能,可用于生成可迭代的输入数据对象序列。这里以itertools.combinations()为例。itertools.combinations()用于构建组合。这些也是输入值的可能分组。让我们举一个实际例子来说明上述观点。假设四支球队比赛。在小组赛阶段,每支球队都与其他球队进行比赛。你的任务是为每支队伍对战找出所有可能的组合。看看下面的代码: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()以及该模块中的其他函数。如需更完整的了解,请参阅本教程(https://medium.com/@jasonrigden/a-guide-to-python-itertools-82e5a306cdf8)。6、使用Python集合Python集合是容器数据类型,即列表、集合、元组和字典。Collections模块提供高性能数据类型来改进您的代码并大大简化任务。collections模块提供了许多功能。我将在这里使用Counter()函数。Counter()函数接受一个可迭代对象(例如列表或元组)并返回一个计数器字典。字典的键将是iterable中的唯一元素,每个键的值将是iterable中元素的计数。要创建一个计数器对象,将一个可迭代对象(列表)传递给Counter()函数,如下代码所示:fromcollectionsimportCountercount=Counter(['a','b','c','d','b','c','d','b'])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函数,这可以通过以下代码完成:students=["Peter","Julia","Alex"]marks=[84,65,77]dictionary=dict(zip(students,marks))print(字典)#{'Peter':84,'Julia':65,'Alex':77}8.使用Python生成器生成器函数允许您声明行为类似于迭代器的函数。它们允许程序员以快速、简单和简洁的方式生成迭代器。让我用一个例子来解释这个概念。假设您需要从1开始对前100,000,000个完全平方数求和。看起来很简单?列表理解很容易做到,但问题是要输入的内容很多。我们来看看下面的代码:)#Ittook13.197494000000006Secstoexecutethismethod当增加要求和的完全平方数时,我们意识到由于计算时间长,这种方法不起作用。这就是Python生成器派上用场的地方。通过用圆括号替换方括号,我们将列表推导式转换为生成器表达式。现在让我们计算花费的时间:t1=time.clock()sum((i*iforiinrange(1,100000000)))t2=time.clock()time_diff=t2-t1print(f"Ittook{time_diff}Secstoexecutethismethod")#Ittocked9.53867000000001Secstoexecutethismethod可以看到,所用的时间大大减少了。对于较大的输入,此效果更为明显。9.从函数中返回多个值Python具有从函数调用中返回多个值的能力,这是许多其他流行的编程语言所缺乏的功能。在这种情况下,返回值应该是一个逗号分隔的值列表,然后Python构造一个元组并将其返回给调用者。我们来看看下面的代码:defmultiplication_division(num1,num2):returnnum1*num2,num1/num2product,division=multiplication_division(15,3)print("Product=",product,"Quotient=",division)#Product=45商数=5.010。使用sorted()函数在Python中对任何序列进行排序很容易,只需使用内置方法sorted(),它会为您完成所有棘手的工作。sorted()对任何序列(列表和元组)进行排序,总是返回一个包含已排序元素的列表。考虑按升序对数字列表进行排序。sorted([3,5,2,1,4])#[1,2,3,4,5]作为另一个示例,按降序对字符串列表进行排序。sorted(['法国','德国','加拿大','印度','中国'],reverse=True)#['印度','德国','法国','中国','加拿大']原标题:10PythonTipsandTricksYouShouldLearnToday,作者:AbhinavSagar
