1. 程式人生 > >python之map/reduce函式、sorted排序及類與物件

python之map/reduce函式、sorted排序及類與物件

三個大資料常用重要函式

python map()函式   

map()函式接收兩個引數,一個是函式,一個是序列

map將傳入的函式依次作用到序列的每個元素,並把結果作為新的list返回。

map的兩種使用方式:1、使用lambda  2、直接呼叫函式

eg

'''遍歷
map
的兩種使用方式:1、使用lambdamap(lambdax:x*2+10,foo)  2、直接呼叫函式:result=map(tt,foo)
x
:每一個元素 '''
foo=[2,10,3,20,49,52,26]
mapDemo=
map(lambda x:x*2+10,foo)
print(mapDemo)
for i in mapDemo:
   

print(i)

def tt(x):
   
return x*2+10
#沒有括號,只有函式名錶示:函式的引用
m=tt
print("m={0}".format(m))
#呼叫函式
m=tt(12)
print(m)
result=
map(tt,foo)
print("result:{0}".format(result))

執行結果:

<mapobject at0x04B43790>

14

30

16

50

108

114

62

m=<functionttat 0x04B45858>

34

resulit:<mapobjectat 0x04B43E10><map object at 0x04B43790>

14

30

16

50

108

114

62

m=<functionttat 0x04B45858>

34

resulit:<mapobjectat 0x04B43E10>

python filter()函式:

對於序列中的元素進行篩選,最終獲取符合條件的序列li = [11, 22, 33]new_list = filter(lambda arg: arg > 22, li)

foo=[2,10,3,20,49,52,26]
f=
filter(lambda x:x>10,foo)     #過濾滿足條件的結果
print(f)
for i in f:
   
print(i)

python reduce()函式:

對於序列內所有元素進行累計操作li = [11, 22, 33]result = reduce(lambda arg1, arg2: arg1 + arg2, li)

reduce內建函式是一個二元操作函式,用來對列表或元組中的所有元素進行傳入reduce的fun()函式計算,即求總。

reduce()函式也是Python內建的一個高階函式。

from functools import reduce
#reduce的使用;from functools import reduce
#
求統計結果
foo=[2,10,3,20,49,52,26]
def re(x,y):
 
return x+y

r=reduce(re
,foo)
print("r={0}".format(r))

#sun的使用:求和
print(sum(foo))
print(max(foo))

python中自定義排序函式:

Python內建的sorted()函式可對list進行排序:

   >>>sorted([36, 5, 12, 9, 21])

[5, 9, 12, 21, 36]

sorted()也是一個高階函式,可以實現自定義排序 sorted()也可以對字串進行排序

字串預設按照ASCII大小來比較:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'])['Credit', 'Zoo', 'about', 'bob']

'Zoo'排在'about'之前是因為'Z'的ASCII碼比'a'小。

#自定義排序函式:sorted排序不改變原來的列表,排序後生成新的列表
print(sorted(foo))
print(foo)
s=
sorted(foo,reverse=True)
print(s)

dict={
"c":4,"b":2}
print(sorted(dict.values()))
print(sorted(dict.keys()))
print(sorted(dict.items()))

#重寫——自定義排序規則
class ReverseDemo:
   
def __init__(self,obj):
       
self.obj=obj
   
def __gt__(self, other):

       
return self.obj<other
print("----------",sorted([23,45,10,9,18],key=lambda x:ReverseDemo(x)))

區分:

.sort()排序方法:對原有列表進行排序,改變原來列表的順序,無返回值print()就是改變後的列表

sorted()排序函式: 排序時不影響原資料,產生新的排序資料 print(sorted(shus))排序後的結果 print(shus)還是原結果

對字串排序時,有時候忽略大小寫排序更符合習慣。

#忽略大小寫
a=['bob','Auliy','aaa','barey','Runnob']
print(sorted(a,key=str.lower))

類與物件

類:具有相同的屬性和方法的物件的集合。
物件:萬物皆物件 var date=new Date();date.get

語法:

 class 類名:
屬性
方法

建立物件:屬性寫在類外的情況,就是通過物件.屬性,物件.方法()的方式呼叫
self:
__init__(self):
系統自動呼叫初始化方法,先生成物件,再呼叫此方法,再將物件賦值給引用名

定義一個類:

#類和物件
#定義類
class Person:
   
#初始化引數
   
def __init__(self,sex=None):
       
#定義類屬性,當前物件.屬性=引數
       
self.sex=sex

   
#定義方法,self代表當前物件
   
def eat(self):
       
print("正在吃飯")
   
def sleep(self):
       
print("正在睡覺")
   
def say(self):
       
print("我的姓名:%s,我的年齡:%d"%(self.name,self.age))
#建立物件
p=Person()
#呼叫方法
p.eat()
p.sleep()

#新增物件屬性,只屬於當前物件
p.name="張三"
p.age=23
p.sex=""
#print("姓名:%s,年齡:%d"%(p.name,p.age))
p.say()

lisa=Person()
lisa.name=
"李四"
lisa.age=25
lisa.say()

#類 繼承了object
class Student(object):

   
def __init__(self,name=None,age=None,sex=None):
       
print("init...")
       
self.name=name
       
self.age=age
       
self.sex=sex
   
def study(self):
       
print("{0}在學習".format(self.name))
   
def __siyou(self):
       
print("siyou")
   
def __str__(self):
       
self.__siyou()
       
return "姓名:{0},年齡:{1},性別:{2}".format(self.name,self.age,self.sex)
   
def __del__(self):
       
print("物件正在銷燬...")
s=Student(
'張三')
#del s
#input()

公有方法:

私有方法:def __test():只能在當前類中使用,以__開頭

自動銷燬方法:

 __del__():

 XXX

當物件沒有引用的時候,或程式結束的時候,程式自動呼叫__del__()

del 引用

刪除時自動呼叫__del__()
程式結束時自動呼叫__del__()

相關推薦

pythonmap/reduce函式sorted排序物件

三個大資料常用重要函式python map()函式    map()函式接收兩個引數,一個是函式,一個是序列map將傳入的函式依次作用到序列的每個元素,並把結果作為新的list返回。map的兩種使用方式:1、使用lambda  2、直接呼叫函式eg:'''遍歷map的兩種使用

python map/reduce

keyword 運算 論文 說明 htm 實現 而且 下一個 html Python內建了map()和reduce()函數。 如果你讀過Google的那篇大名鼎鼎的論文“MapReduce: Simplified Data Processing on Large Clust

python自定義函式傳參作用域

一、函式的作用域:表示函式執行時的範圍 注意:返回函式名稱,即返回一個地址;簡單說就是:函式名稱即指代該函式地址,在呼叫函式時,需在函式名稱後面加括號:函式名稱() 如上面圖片中那樣的情況,再最後加兩行程式碼: dz3=dz2()   #---接收foo2()函式執行的返回

PythonMap高階函式

 map()函式 map()是 Python 內建的高階函式,它接收一個函式 f 和一個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到一個新的 list 並返回。 例如,對於list [1, 2, 3, 4, 5, 6, 7, 8, 9] 如果希

pythonmap/reduce函式實現int()功能,即字串轉換成數字

map()函式接收兩個引數,一個是函式,一個是可迭代物件,如列表,字串等,map將傳入的函式依次作用到序列(可迭代物件)的每個元素,並把結果作為新的Iterator(可迭代物件)返回。 再看reduc

python基礎map/reduce/filter/sorted

排序。 strong func iterable 例子 決定 tools sort .com ---map(fun,iterable)   首先來看一看map()函數,map函數接受兩個參數,第一個參數是函數的名稱,第二個參數一個可叠代對象。即map(fun,iterabl

Python中lambda表示式reduce函式map函式zip函式

對Python這幾個常用的小函式做一個彙總學習,參考了一些資料,有不妥的地方請原諒。 1、lambda函式 lambda是Python的一個內建函式,但是比def簡單很多。lambda不同於其他函式,主體是一個表示式,在程式碼內部嵌入一個函式的定義。工程用的比較多的是程式

學渣學pythonmap函式

map()函式是Python內建的高階函式,它接收一個函式f和一個list,並把函式f作用在list的每個元素上。從而得到一個f處理過的新的list返回。下面舉個栗子: 1. 例1 list [1, 2, 3, 4, 5, 6, 7] 我們要得到list的每個元素都平方後的,新的li

pythonpandas的函式排序

import numpy as np import pandas as pd s1 = pd.Series(np.random.randint(-5,10,10)) s2 = pd.DataFrame(np.random.uniform(-5,10,(3,4)),index=list('

python-map/reduce函式的應用

本文作者:黎智煊,叩丁狼高階講師。原創文章,轉載請註明出處。 map()和reduce()函式 上次我們說了python的列表生成,可以很方便用很少程式碼,去取代相同的功能但需要寫比較重複的程式碼,現在我們講一下,python另外一對比較好用的高階函式. Py

map函式reduce函式filter函式的區別

    ①從引數方面來講:map()函式:  map()包含兩個引數,第一個是引數是一個函式,第二個是序列(列表或元組)。其中,函式(即map的第一個引數位置的函式)可以接收一個或多個引數。reduce()函式:reduce() 第一個引數是函式,第二個是 序列(列表或元組)。但是,其

pythonmapreduce的區別以及zip使用

①從引數方面來講:map()函式:map()包含兩個引數,第一個是引數是一個函式,第二個是序列(列表或元組)。其中,函式(即map的第一個引數位置的函式)可以接收一個或多個引數。reduce()函式:reduce() 第一個引數是函式,第二個是 序列(列表或元組)。但是,其函

pythonMap函式

# map()函式使用舉例 # 功能:map()接受一個函式f和一個或多個list,將f依次作用在list的每個元素,得到一個新的列表 # 語法:map(方法名,列表,[列表2]) # 注意:map()函式的返回值需要強制轉換成list型別,且不改變原列表值 list_1 = [1, 2, 3, 4, 5]

python路 -- 單引號雙引號&三引號

span 區別 執行 跨行 註銷 bold 雙引號 int col 單引號與雙引號完全一模一樣;沒有區別。例如: print(‘hello, world!‘)print("hello, world!")執行結果都是輸出:hello,world! 三引號可以表示註銷和

pythonmap,filter

處理 一個 als map 取余 就是 數據 gpo 每一個 map和filter是python裏面比較重要的BIF,map的主要作用就是對集合裏面的每一個元素進行處理,filter的作用就是過濾集合,具體功能如下 1 t =lambda x:x%2 2 list(fil

python文件操作OS模塊面向對象

文件系統、OS、面向對象一 文件操作 1 文件系統和文件 在磁盤上讀寫文件的功能都是由操作系統提供的,現代操作系統不允許普通的程序直接操作磁盤,所以,讀寫文件就是請求操作系統打開一個文件對象(通常稱為文件描述符),然後,通過操作系統提供的接口從這個文件對象中讀取數據(讀文件),或者把數據寫入這個文件對象(寫文

python模塊定義導入優化詳解

無需 文件中 就是 系統路徑 python 順序 使用方式 一行 系列 一、模塊 1.模塊的定義 模塊是一組包含了一組功能的python文件,比如test.py,模塊名為test,可以通過import test進行調用。模塊可以分為以下四個通用類別   1 使用python

Python循環條件變量字符串格式化

會有 and 輸出 二進制文件 一個數 字典 div code 重復執行 一、認識python python語言的優缺點,自行百度,這裏不概述,簡單說下,python是一門面向對象,解釋型計算機語言。那麽問題來了,解釋型和編譯型語言有什麽區別? 1.解釋型和編譯型語言區別

Python路-Day06函式

P## 函式的定義 程式設計裡面的函式定義是:def作為關鍵字 def test(x) : "The function definitions" x+=1 return x def:定義函式的關金子 test:函式名 ():內可定義的形參 "文件描述(非

python遞迴函式,二分查詢

遞迴函式 遞迴函式一直都是我們所覺得難理解的以一種方式,但其實,也很好理解的,遞迴函式就是自己呼叫自己。就是在重複的做同一件事情。只是有的時候,也最好不要使用遞迴函式,因為你的函式一旦呼叫,就要開闢新的記憶體空間。不利於程式的執行。python對你記憶體一個保護機制,預設只能遞迴到998