1. 程式人生 > >python基礎學習第六天

python基礎學習第六天

py 學習

6.1內置函數

6.1.1 filter函數

6.1.2 map函數

6.1.3 reduce函數


6.1.1:filter (函數名字, 序列) 過濾器對象

filter()函數是 Python 內置的另一個有用的高階函數,filter()函數接收一個函數 f 和一個list,這個函數 f 的作用是對每個元素進行判斷,返回 True或 False,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list

# 過濾列表中名稱是xiong的字符串

			name=["xiong","yuan"]

			def fi(n):
			    if n!="xiong":
			        return n

			let=filter(fi,name)
			print(list(let))
				# 結果 [‘yuan‘]

# 再比如過濾掉數字為奇數的行

			def number(n):
			    if n %2 ==1:
			        return n
			jnum=filter(number,range(1,20))		# 過濾對象內存地址:<filter object at 0x000000000250F828>
			print(list(jnum))					# 打印結果就是:[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]


6.1.2 map (函數名字, 序列)

map()是 Python 內置的高階函數,它接收一個函數 f 和一個 list,並通過把函數 f 依次作用在 list 的每個元素上,得到一個新的 list 並返回。

map()函數是python內置的高階函數,對傳入的list的每一個元素進行映射,返回一個新的映射之後的list

			def x(f):
			    return f*f 		#從9開始每次相乘

			num=map(x,range(9))
			print(list(num))				   0  1  2  3   4   5  6    7  8  每個值都乖以自己

# 結果: 等於就是每個值的平方 [0, 1, 4, 9, 16, 25, 36, 49, 64]

註意:map()函數不改變原有的 list,而是返回一個新的 list。


由於list包含的元素可以是任何類型,因此,map() 不僅僅可以處理只包含數值的 list,事實上它可以處理包含任意類型的 list,只要傳入的函數f可以處理這種數據類型。

			x=["ali","jic","you"]
			def name(x):
			    return "a" + x     	
			na=map(name,x)     			# 跟filter差不多,但如果將map改為filter那麽它返回的結果就是ali,jic,you
			print(list(na))
				# 結果: [‘aali‘, ‘ajic‘, ‘ayou‘]

# 擴展信息: http://www.cnblogs.com/superxuezhazha/p/5714970.html


6.1.3 reduce(函數,對象或序列)

reduce() # 想用這個方法必須加上如下參數 reduce的結果就是一個值

		 from functools import reduce 

		lambda a,b: a + b

		## 示例 先調用這個函數 
		from functools import reduce

		# add = lambda a,b: a+b
		# print(add(1,2))			# 結果3

		def add1(x,y):
		    return x + y

		print(reduce(add1,range(10)))	# 結果45


本文出自 “xiong” 博客,請務必保留此出處http://xiong51.blog.51cto.com/5239058/1965681

python基礎學習第六天