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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值