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

30个Python常用极简代码,带走用

时间:2023-03-11 23:45:05 科技观察

学习最快学Python。当然对于各种小项目也是实用的。只有自己思考、自己写,才能记住规则。本文是30个极简任务,初学者可以尝试自己实现;本文也是30段代码,Python开发者也可以看看有没有什么意想不到的用法。1.重复元素判断下面的方法可以检查给定列表中是否有重复元素,它会使用set()函数来移除所有重复元素。defall_unique(lst):returnlen(lst)==len(set(lst))x=[1,1,2,2,3,2,3,4,5,6]y=[1,2,3,4,5]all_unique(x)#Falseall_unique(y)#True2.字符元素组成判断判断两个字符串的组成元素是否相同。fromcollectionsimportCounterdefanagram(first,second):returnCounter(first)==Counter(second)anagram("abcd3","3acdb")#True3。内存使用importsysvariable=30print(sys.getsizeof(variable))#244。byteusagebelow一个代码块,用于检查字符串占用的字节数。defbyte_size(string):return(len(string.encode('utf-8')))byte_size('')#4byte_size('HelloWorld')#115。打印N次字符串这个代码块不需要循环语句打印N次字符串。n=2s="编程"print(s*n)#ProgrammingProgramming6.首字母大写下面的代码块将使用title()方法将字符串中每个单词的首字母大写。s="programmingisawesome"print(s.title())#ProgrammingIsAwesome7。Blocking给定一个特定的大小,定义一个函数根据这个大小来切割列表。frommathimportceildefchunk(lst,size):returnlist(map(lambdax:lst[x*size:x*size+size],list(range(0,ceil(len(lst)/size))))chunk([1,2,3,4,5],2)#[[1,2],[3,4],5]8。Compression此方法可以去除布尔值,例如(False,None,0,""),它使用filter()函数。defcompact(lst):returnlist(filter(bool,lst))compact([0,1,False,2,'',3,'a','s',34])#[1,2,3,'一个',',34]9。解包以下代码段可以将打包对列表解包为两个不同的元组。array=[['a','b'],['c','d'],['e','f']]transposed=zip(*array)print(transposed)#[('a','c','e'),('b','d','f')]10。链式比较我们可以在一行代码中使用不同的操作符来比较多个不同的元素。a=3print(2belseadd)(a,b))#918。检查重复项下面的代码将检查两个列表是否有重复项。defhas_duplicates(lst):returnlen(lst)!=len(set(lst))x=[1,2,3,4,5,5]y=[1,2,3,4,5]has_duplicates(x)#Truehas_duplicates(y)#False19。合并两个词典下面的方法将用于合并两个词典。defmerge_two_dicts(a,b):c=a.copy()#makeacopyofac.update(b)#modifykeysandvaluesofwiththeoncefrombreturnca={'x':1,'y':2}b={'y':3,'z':4}print(merge_two_dicts(a,b))#{'y':3,'x':1,'z':4}在Python3.5或更高版本中,我们还可以合并字典:defmerge_dictionaries(a,b)return{**a,**b}a={'x':1,'y':2}b={'y':3,'z':4}print(merge_dictionaries(a,b))#{'y':3,'x':1,'z':4}20.将两个列表转换为字典下面的方法会将两个列表转换为一个字典。defto_dictionary(keys,values):returndict(zip(keys,values))keys=["a","b","c"]values=[2,3,4]print(to_dictionary(keys,values))#{'a':2,'c':4,'b':3}21.使用枚举我们经常使用For循环来遍历一个列表,也可以枚举列表的索引和值。list=["a","b","c","d"]forindex,elementinenumerate(list):print("Value",element,"Index",index,)#('Value','a','Index',0)#('Value','b','Index',1)#('Value','c','Index',2)#('Value','d','Index',3)22.执行时间以下代码块可用于计算执行特定代码所需的时间。importtimestart_time=time.time()a=1b=2c=a+bprint(c)#3end_time=time.time()total_time=end_time-start_timeprint("Time:",total_time)#('Time:',1.1205673217773438e-05)23。Tryelse我们还可以在使用try/except语句时添加一个else子句。如果没有错误被触发,这个子句将被执行。try:2*3exceptTypeError:print("Anexceptionwasraised")else:print("ThankGod,noexceptionswerraised.")#ThankGod,noexceptionswerraised。24.元素频率下面的方法将根据元素频率在列表中取最常见的元素。defmost_frequent(list):returnmax(set(list),key=list.count)list=[1,2,1,2,3,2,1,4,2]most_frequent(list)25.下面回文的方法sequence会检查给定的字符串是否为回文序列,它会先将所有字母转为小写,并去除非英文字母符号。最后,它比较字符串与反转字符串是否相等,表示为回文序列。defpalindrome(string):fromreimportsubs=sub('[\W_]','',string.lower())returns==s[::-1]palindrome('tacocat')#True26。不要使用if-else计算器的代码可以在不使用条件语句的情况下实现加、减、乘、除、幂运算。它是通过字典的数据结构来实现的:importoperatoraction={"+":operator.add,"-":operator.sub,"/":operator.truediv,"*":operator.mul,"**":pow}print(动作['-'](50,25))#2527。Shuffle这个算法会打乱列表元素的顺序,它新的列表会主要通过Fisher-Yates算法排序:fromcopyimportdeepcopyfromrandomimportrandintdefshuffle(lst):temp_lst=deepcopy(lst)m=len(temp_lst)while(m):m-=1i=randint(0,m)temp_lst[m],temp_lst[i]=temp_lst[i],temp_lst[m]返回temp_lstfoo=[1,2,3]shuffle(foo)#[2,3,1],foo=[1,2,3]28.expandthelist将一个列表的所有元素,包括子列表,展开成一个列表。defspread(arg):ret=[]foriinarg:ifisinstance(i,list):ret.extend(i)else:ret.append(i)返回retspread([1,2,3,[4,5,6],[7],8,9])#[1,2,3,4,5,6,7,8,9]29.交换值交换两个变量的值,不需要任何额外的操作。defswap(a,b):returnb,aa,b=-1,14swap(a,b)#(14,-1)spread([1,2,3,[4,5,6],[7],8,9])#[1,2,3,4,5,6,7,8,9]30。字典的默认值是通过Key获取对应的Value值,可以通过以下方式设置默认值。如果get()方法未设置默认值,则遇到不存在的Key时将返回None。d={'a':1,'b':2}print(d.get('c',3))#3