Python是一门强大易用的语言,语法简洁优雅,不像Java那样繁琐废话,还有一些特殊的函数或语法可以让代码更短更丰富简洁的。根据笔者的经验,这里给出五个常用的python技巧:字符串操作列表推导lambda和map()函数if、elif和else单行表达式zip()函数1.字符串操作Python擅长使用数学运算符(如作为+和*)对字符串进行操作:+concatenatestring*repeatstringmy_string="HiPython..!"print(my_string*2)#HiPython..!HiPython..!print(my_string+"IlovePython"*2)#HiPython..!我爱Python我爱Python也可以通过切片操作[::-1]轻松反转字符串,而且它不限于字符串(如列表翻转)!my_string="嗨Python..!"print(my_string[::-1])#!..nohtyPiHmy_list=[1,2,3,4,5]print(my_list[::-1])#[5,4,3,2,1]下面是单词列表反向拼接成字符串:word_list=["awesome","is","this"]print(''.join(word_list[::-1])+'!')#这太棒了!使用.join()方法,''(空格)用感叹号连接反向列表中的所有单词!。2.列表理解列表理解,一个可以改变你世界观的技巧!这是对列表执行快速操作的非常强大、直观和可读的方法。假设,有一个随机函数返回一个数的平方并加5:defstupid_func(x):returnx**2+5现在,想要将函数stupid_func()应用于列表中的所有奇数,如果不使用列表推导,笨方法如下:defstupid_func(x):returnx**2+5my_list=[1,2,3,4,5]new_list=[]forxinmy_list:ifx%2!=0:新列表。append(stupid_func(x))print(new_list)#[6,14,30]如果使用列表推导,代码瞬间变得优雅:defstupid_func(x):returnx**2+5my_list=[1,2,3,4,5]print([stupid_func(x)forxinmy_listifx%2!=0])#[6,14,30]列表理解语法:[expressionforiteminlist],如果你认为不够花哨,还可以加上判断条件,比如上面的“奇数”条件:[expressionforiteminlistifconditional]。本质上是下面代码的功能:foriteminlist:ifconditional:expression非常酷!.但是你可以更进一步,直接省略stupid_func()函数:my_list=[1,2,3,4,5]print([x**2+5forxinmy_listifx%2!=0])#[6,14,30]3.Lambda&Map函数LambdaLambda看起来有点奇怪,但奇怪的东西一般都很强大。一旦掌握了,非常直观,省去了很多废话代码。基本上,Lambda函数是一个小型匿名函数。为什么要匿名?因为Lambda最常用于执行简单的操作,但不需要像defmy_function()那样严肃,所以Lambda也被称为lazyfunction(弥补,忽略和忽略)。改进上面的例子:defstupid_func(x)可以用一行Lambda函数代替:stupid_func=(lambdax:x**2+5)print([stupid_func(1),stupid_func(3),stupid_func(5))])#[6,14,30]那么为什么要使用这种奇怪的语法呢?当您想在不定义实际函数的情况下执行一些简单操作时,这会很有用。以数字列表为例。假设列表已排序?一种方法是使用sorted()方法:my_list=[2,1,0,-1,-2]print(sorted(my_list))#[-2,-1,0,1,2]sorted()function排序可以做到,但是假设你想按每个数的平方来排序?这时可以使用lambda函数来定义排序键key,sorted()方法也使用该函数来决定如何排序:my_list=[2,1,0,-1,-2]print(sorted(my_list,key=lambdax:x**2))#[0,-1,1,-2,2]Map函数map是python的内置函数,会根据提供的功能。假设你有一个列表,想要将列表中的每个元素与另一个列表中的相应元素相乘,该怎么做?使用lambda函数和映射!print(list(map(lambdax,y:x*y,[1,2,3],[4,5,6])))#[4,10,18]和下面一般的废话代码,简单而优雅地:x,y=[1,2,3],[4,5,6]z=[]foriinrange(len(x)):z.append(x[i]*y[i])print(z)#[4,10,18]4.if-else一行在你的代码中的某个地方,可能有这样一个无意义的条件语句:x=int(input())ifx>=10:print("Horse")elif1
