1.去重,集合
集合的乙個重要特點是:自動去除重複的值
li = [1,2,3,1,1,2,2,3,3]#去除重複的元素
set=set(li) #轉換為集合,因為集合會自動去重。print(set)
li=list(set)#將集合轉換為列表print(li)
2.生成器
規則:生成器函式,或者生成器表示式,在呼叫後返回生成器,但生成器內部的函式沒有執行,只有在從生成器中取值是,其內部的函式才執行。
乙個生成器只能只能用一次:將乙個生成器中的值全部取出來之後,再從中取值得到的是空。
從生成器中取值:
for:如果沒有break,會一直取知道取完。
next:乙個乙個取
資料型別強**會一次性把所有的資料都讀到記憶體裡。
在生成器表示式外有for迴圈時,把for迴圈拆開來分析。
defdemo():for i in range(4):yieldi
g=demo()
g1=(i for i ing)
g2=(i for i ing1)print(list(g1))print(list(g2))
在執行list(g1)之前,生成器函式,生成器表示式中的內容都沒有執行。(只有從生成器中取值時,生成器函式,生成器表示式中的內容才會執行)
當執行list(g1)時,就是從g1這個生成器中取值(資料型別強轉),g1又去找g要值,所以執行結果是:[0,1,2,3]。
當執行list(g2)時,g2生成器會找g1生成器要值,而list(g1)語句,以及將生成器g1中的值取出來,所以g1是空,執行結果為:
defadd(n,i):return n+ideftest():for i in range(4):yieldi
g=test()for n in [1,10]:
g=(add(n,i) for i ing)print(list(g))
同上:在list(g)之前,生成器函式,生成器表示式內的語句都沒有執行。只有當取生成器中的值得時候才執行。
遇見for迴圈裡面有生成器表示式,將for迴圈拆解開來。
n = 1
g = (add(n,i) for i in g)
n = 10
g = (add(n,i) for i in g)
當執行list(g)時,生成器函式或者是生成器表示式中的內容開始執行。
n就變成了迴圈中的最後乙個值。
for迴圈中就變為:
n = 10
g = (add(n,i) for i in (add(n,i) for i in test()))
結果為:[20,21,22,23]
進度條列印
importtimedefdown():for i in range(0,101,2):
time.sleep(0.1)
char_num= i//2 #對i取商
#\r是每次列印從頭列印,%%列印%
#當i=100時,在最後列印乙個換行符,保證再有內容輸入時,從下一行輸入。
str = '\r%s%% : %s\n'%(i,'*'*char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)print(str,end='',flush=true) #end:每次輸入的結束符號
匿名函式和內建函式
考察匿名函式式往往會結合內建函式。
可以結合匿名函式的內建函式:
min:求最小值,min(iterable,key)
max:同上
filtre: ilter()函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合 條件元素組成的新list。filter(f,list)。結果不大於原來的list
map: map()函式接收兩個引數,乙個是函式,乙個是序列,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的list返回。結果等於原來的list
sorted: 函式sorted進行排序(從2.4開始),返回副本,原始輸入不變
與sort的區別:函式sort進行排序,在本地進行排序,不返回副本
語法:sort(iterable,key,reverse)
iterable:是可迭代型別;
key:傳入乙個函式名,函式的引數是可迭代型別中的每一項,根據函式的返回值大小排序;
reverse:排序規則. reverse = true 降序 或者 reverse = false 公升序,有預設值(false)。
返回值:有序列表
1.#用匿名函式將兩個元組('a','b'),('c','d')變為[,]
deffunc(x):return
ret= zip(('a','b'),('c','d'))#輸出('a','c') ('b','d')
result=map(func,ret)print(list(result))#一行**實現
print(list(map(lambda trup:,zip(('a','b'),('c','d')))))
2.defmultipliers():return [lambda x:i*x for i in range(4)]#列表推導式
#執行完後:[lambda x:i*x,lambda x:i*x,lambda x:i*x,lambda x:i*x]
print([m(2) for m inmultipliers()])#執行 multipliers(),返回乙個列表(由列表推導式得到的)#執行for m in multipliers(),m就是列表裡的每乙個匿名函式#m(2)就是呼叫匿名函式#執行m(2)時,2傳給x,i最後是=3,所以lambda x:i*x --> 3*2
#結果:[6, 6, 6, 6]
defmultipliers():return (lambda x:i*x for i in range(4))#生成器表示式
print([m(2) for m inmultipliers()])#執行multipliers(),執行這個函式,返回乙個生成器,而生成器表示式中的語句沒有執行#執行一次for迴圈就相當於執行一次next()#執行一次for m in multipliers(),再執行一次lambda x:i*x for i in range(4),再執行一次m(2)#lambda x:0*x ---> m(2) 0*2=0#lambda x:1*x ---> m(2) 1*2=2#lambda x:2*x ---> m(2) 2*2=4#lambda x:3*x ---> m(2) 3*2=6
#結果:[0, 2, 4, 6]
mysql語法 面試題
新增主鍵 alter table 表名 modify id int primary key 刪除主鍵 alter table 表名 drop primary key mysql約束 預設約束 default 非空約束 not null 唯一約束 unique 主鍵約束 primary key 非空且...
C 面試題(語法,附答案)
1 delegate是引用型別還是值型別?enum int和string呢 難度係數40 答案 delegate引用型別,enum值型別,int引用型別,string引用型別 盡供參考 4 請指出c 中是否有下列關鍵字?virtual sealed abstract import as in got...
Python 面試題整理
請用 python程式或你擅長的語言寫出下面問題的答案 1 乙個不固定長度的字串,找出連續最長的0或連續最長的1 提示1 1110001111 其中連續 3個1與3個0與4個1 程式反饋結果要是最長的是4個1 提示2 1010001010 程式反饋結果最長的是 3個0 提示3 題目問的是不固定長度 ...