python學習記錄

2021-08-01 06:47:50 字數 1907 閱讀 3056

函式的作用:按照key對迭代器iterable進行分組

函式的返回:tuple,其中第乙個元素是groupby後的鍵值,第二個元素是乙個迭代器,包含那些被groupby的物件。

第二個引數key是可選的,如果預設,那就按照iterable的每個元素分組。如果不預設,那應該是乙個函式,將iterable中的每個元素作用於這個函式。

#舉個例子1

from itertools import groupby

l = ['aa','bb','ccc','ddd','csadfa']

for i,k in groupby(l,len):

print i, list(k)

解讀:

l是乙個list迭代器,其中每個元素都是str;

groupby的第乙個引數就是l, 第二個引數是個函式len,將len函式作用於l的每個元素,得到每個字串的長度為2,2,3,3,6;

然後對這5個數字groupby,得到2,3,6這三個分組;其中,2的組中有』aa』, 『bb』, 3的組中有』ccc』, 『ddd』,6的組中有』csadfa』。

groupby的返回是tuple,for迴圈中i, k分別對應tuple的第0個和第1個元素,i為2時,k為2組中元素組成的迭代器,list(k)就把其中元素作為乙個list輸出,後兩個一樣。

輸出:

2 ['aa', 'bb']

3 ['ccc', 'ddd']

6 ['csadfa']

#舉個例子2

l = [,]

out = [(name, list(group)) for name, group

in groupby(l, lambda p:p['date'])]

print out

解讀:

l是乙個list,其中的每個元素是dictionary

out是乙個list,其中的每個元素是乙個tuple

groupby的第乙個元素是迭代器l,第二個元素是lambda表示式構建的匿名函式,將l的每個元素作為輸入。因為l的每個元素p是字典,所以函式的返回值是以date為鍵值的value。所以groupby的分組是1,2,其中1的分組有元素, 2的分組中有元素

for迴圈中name為1時,group是,list(group)就是

輸出:

[(1, ), (2, )]
map(func, iter1, iter2),iter2可選, 也可以有更多的迭代器

通常接收乙個函式和乙個list迭代器,把函式作用於每乙個迭代器中元素,然後返回乙個新的list

#舉個例子

l = [1, 2, 3, 4, 9]

print map(lambda x:x**2, l)

#返回 [1, 4, 9, 16, 81]

如果迭代器不只乙個,那麼前面的函式應該接收相應個數的引數,依次從這幾個迭代器中取元素。

#舉個例子2

l1 =[1, 2, 3, 4, 9]

l2 =[3, 10, 20, 30, 40]

l3 =[10, 20, 30, 40, 50]

print map(lambda a,b,c:a+b+c, l1, l2, l3)

#返回:[14, 32, 53, 74, 99]

函式接受乙個迭代器,然後返回若干元組,元組的第乙個值是索引,第二個值是迭代器的元素。

l = [1, 2, 3, 4, 9]

for i, item

in enumerate(l):

print i, item

#返回:01

1223

3449

python學習記錄

python 3 整除,複數表示,slice,range,pass關鍵字,函式用引數名呼叫,函式的 arg和 arg,預設引數,unpacking argument lists,sequence 型別 list,set tuple,dictionary,queue,stack loop相關 enum...

python學習記錄

python函式記錄 修飾符作用就是表示 下面的值或者函式作為 後面函式的引數 返回值由 後面的函式返回 map 接收乙個函式和乙個序列,然後保留函式返回的結果的序列 reduce 接收乙個函式和乙個序列 函式結果為乙個值,運算過程就是從序列的第乙個值開始傳給函式,返回結果再次傳入函式,直到最後得到...

python學習記錄

numpy中的arange是左閉右開的 eg.a np.arange 2,10,2 輸出結果為 2 4 6 8 b np.linspace 2,10,2 預設是包含10的,但是可以通過endpoint false來取消 np.logspace 1,4,4,endpoint true,base 2 這...