雖然python是一個易入門的語言,但是很多人依然還是會問到底怎么樣學(xué)Python才最快,答案當(dāng)然是實戰(zhàn)各種小項目,只有自己去想與寫,才記得住規(guī)則。本文寫的是10個極簡任務(wù),初學(xué)者可以嘗試著自己實現(xiàn);本文同樣也是10段代碼,Python開發(fā)者也可以看看是不是有沒想到的用法。
1、重復(fù)元素判定
以下方法可以檢查給定列表是不是存在重復(fù)元素,它會使用set()函數(shù)來移除所有重復(fù)元素。
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)#False
all_unique(y)#True
2、分塊
給定具體的大小,定義一個函數(shù)以按照這個大小切割列表。
frommathimportceil
defchunk(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]
3、壓縮
這個方法可以將布爾型的值去掉,例如(False,None,0,“”),它使用filter()函數(shù)。
defcompact(lst):
returnlist(filter(bool,lst))
compact([0,1,False,2,'',3,'a','s',34])
#[1,2,3,'a','s',34]
4、使用枚舉
我們常用For循環(huán)來遍歷某個列表,同樣我們也能枚舉列表的索引與值。
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)
5、解包
如下代碼段可以將打包好的成對列表解開成兩組不同的元組。
array=[['a','b'],['c','d'],['e','f']]
transposed=zip(*array)
print(transposed)
#[('a','c','e'),('b','d','f')]
6、展開列表
該方法將通過遞歸的方式將列表的嵌套展開為單個列表。
defspread(arg):
ret=[]
foriinarg:
ifisinstance(i,list):
ret.extend(i)
else:
ret.append(i)
returnret
defdeep_flatten(lst):
result=[]
result.extend(
spread(list(map(lambdax:deep_flatten(x)iftype(x)==listelsex,lst))))
returnresult
deep_flatten([1,[2],[[3],4],5])#[1,2,3,4,5]
7、列表的差
該方法將返回第一個列表的元素,且不在第二個列表內(nèi)。如果同時要反饋第二個列表獨有的元素,還需要加一句set_b.difference(set_a)。
defdifference(a,b):
set_a=set(a)
set_b=set(b)
comparison=set_a.difference(set_b)
returnlist(comparison)
difference([1,2,3],[1,2,4])#[3]
8、執(zhí)行時間
如下代碼塊可以用來計算執(zhí)行特定代碼所花費的時間。
importtime
start_time=time.time()
a=1
b=2
c=a+b
print(c)#3
end_time=time.time()
total_time=end_time-start_time
print("Time:",total_time)
#('Time:',1.1205673217773438e-05)
9、Shuffle
該算法會打亂列表元素的順序,它主要會通過Fisher-Yates算法對新列表進(jìn)行排序:
fromcopyimportdeepcopy
fromrandomimportrandint
defshuffle(lst):
temp_lst=deepcopy(lst)
m=len(temp_lst)
while(m):
m-=1
i=randint(0,m)
temp_lst[m],temp_lst[i]=temp_lst[i],temp_lst[m]
returntemp_lst
foo=[1,2,3]
shuffle(foo)#[2,3,1],foo=[1,2,3]
10、交換值
不需要額外的操作就能交換兩個變量的值。
defswap(a,b):
returnb,a
a,b=-1,14
swap(a,b)#(14,-1)
spread([1,2,3,[4,5,6],[7],8,9])#[1,2,3,4,5,6,7,8,9]
以上內(nèi)容為大家介紹了十個極簡Python代碼,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/