python实现序列数据预处理_Python笔记:序列处理函数
len() : 返回字符串長度
a = "123456789"
len(a)
1
2
a="123456789"
len(a)
返回
9 ,即為a字符串的長度
max() / min() :返回列表中最大/最小值
l = [1, 5, 8, 45, 85, 45, 77, 51, 10]
print(max(l),min(l))
1
2
l=[1,5,8,45,85,45,77,51,10]
print(max(l),min(l))
返回
851
filter() : 過濾不符合要求的數據
filter(function or None , sequence) -> list, tuple, or string
1
filter(functionorNone,sequence)->list,tuple,orstring
filter() 輸入一個函數和一個序列,然后將序列中的項目帶入函數中計算,保留返回值為True的項目;如果函數為None,保留序列中為true的項目;如果序列為元祖(tuple)或字符串(string),返回相同的類型,否則返回列表類型(list)
l = range(10)
def f(x):
if x > 5 :
return True
filter(f , l)
1
2
3
4
5
l=range(10)
deff(x):
ifx>5:
returnTrue
filter(f,l)
返回
[6,7,8,9]
也可以用lambda函數來簡化代碼:
l = range(10)
filter(lambda x: x>5 , l)
1
2
l=range(10)
filter(lambdax:x>5,l)
zip() : 并行遍歷
name = ['tom', 'zhang', 'chen']
age = [20, 30, 40]
tel = ['130', '136', '186']
test = [1, 2]
zip(name, age, tel, test)
1
2
3
4
5
name=['tom','zhang','chen']
age=[20,30,40]
tel=['130','136','186']
test=[1,2]
zip(name,age,tel,test)
返回
[('tom',20,'130',1),('zhang',30,'136',2)]
因為test列表中只有兩個元素,所以zip()根據最短的列表做遍歷,因此返回的列表只有兩項。
map() : 并行遍歷
map()的一個作用和zip()類似:
name = ['tom', 'zhang', 'chen']
age = [20, 30, 40]
tel = ['130', '136', '186']
test = [1, 2]
map(None, name, age, tel, test)
1
2
3
4
5
name=['tom','zhang','chen']
age=[20,30,40]
tel=['130','136','186']
test=[1,2]
map(None,name,age,tel,test)
返回
[('tom',20,'130',1),('zhang',30,'136',2),('chen',40,'186',None)]
map()和zip()的區別在于,他會把所有列表的所有元素都遍歷出來看,并且對遍歷之后的元祖數據進行操作
a = [1, 2, 3]
b = [2, 3, 4]
def f(x, y):
return x * y
print(map(None, a, b)," ", map(f, a, b))
1
2
3
4
5
a=[1,2,3]
b=[2,3,4]
deff(x,y):
returnx*y
print(map(None,a,b)," ",map(f,a,b))
返回
[(1,2),(2,3),(3,4)]??[2,6,12]
reduce() : 遞歸
reduce(function, sequence[, initial]) -> value
1
reduce(function,sequence[,initial])->value
將序列中的兩個參數作用于函數funtcion中,得出的數據與序列中的下一個數再作用于函數function中,最后遞歸輸出一個單一的值
例如
reduce(lambdax,y:x+y,range(1,6))計算過程為:
((((1+2)+3)+4)+5)
原本的遞歸使用的是for循環
l = range(1,101)
n = 0
for i in l:
n+=i
print("1+2+3+...+100 = %d" % (n))
1
2
3
4
5
l=range(1,101)
n=0
foriinl:
n+=i
print("1+2+3+...+100 = %d"%(n))
輸出
1+2+3+...+100=5050
用reduce()來實現可以做到更加簡單
l = range(1,101)
reduce(lambda x,y: x+y, l)
1
2
l=range(1,101)
reduce(lambdax,y:x+y,l)
喜歡 (0)賞分享 (0)
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的python实现序列数据预处理_Python笔记:序列处理函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 星外主机管理系统可以装到内网_智慧消防管
- 下一篇: python redis事务_pytho