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)