Python零基础教程:内置函数详解
1 ,filter(function, sequence):
对sequence中的item依次执行function(item),将执行结果为True的item做成一个filter object的迭代器返回。可以看作是过滤函数。
str = ['a', 'b','c', 'd']
def fun1(s):
if s != 'a':
return s
ret = filter(fun1, str)
print(list(ret))# ret是一个迭代器对象
2, map(function, sequence)
map()函数,可以将一个函数映射到一个可以枚举类型上面。对sequence中的item依次执行function(item),将执行结果组成一个List返回
另外map也支持多个sequence,当然这也要求function支持相应数量的参数输入。
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
str = ['a', 'b','c','d']
def fun2(s):
return s + "alvin"
ret = map(fun2, str)
print(ret) # map object的迭代器
print(list(ret))# ['aalvin', 'balvin', 'calvin', 'dalvin']
>>> def cube(x): return x*x*x
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
>>> def cube(x) : return x + x
>>> def add(x, y): return x+y
>>> map(add, range(8), range(8))
[0, 2, 4, 6, 8, 10, 12, 14]
对sequence中的item依次执行function(item),将执行结果组成一个map object迭代器返回.
map也支持多个sequence,这就要求function也支持相应数量的参数输入:
def add(x,y):
return x+y
print (list(map(add, range(10), range(10))))
##[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
3,reduce(function, sequence, starting_value)
对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用.
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
from functools import reduce
def add1(x,y):
return x + y
print (reduce(add1, range(1, 101)))## 4950 (注:1+2+...+99)
print (reduce(add1, range(1, 101), 20))## 4970 (注:1+2+...+99+20)
对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用,例如可以用来对List求和,示例如下:
>>> def add(x,y): return x + y
>>> reduce(add, range(1, 11))
(注:1+2+3+4+5+6+7+8+9+10)
>>> reduce(add, range(1, 11), 20)
(注:1+2+3+4+5+6+7+8+9+10+20)
4,lambda
它允许你快速定义单行的最小函数(其本质就是函数),类似C语言中的宏,可以用在任何需要函数的地方,示例如下:
>>> g = lambda x: x * 2
>>> g(3)
6
>>> (lambda x: x * 2)(3)
6
普通函数与匿名函数的对比:
#普通函数
def add(a,b):
return a + b
print add(2,3)
#匿名函数
add = lambda a,b : a + b
print add(2,3)
#========输出===========
5
5
匿名函数的命名规则,用lamdba 关键字标识,冒号(:)左侧表示函数接收的参数(a,b) ,冒号(:)右侧表示函数的返回值(a+b)。
因为lamdba在创建时不需要命名,所以,叫匿名函数
5,int64和int的区别?
int是Python的基本类型,而int64是numpy中引入的一个类,即numpy.int64;
使用numpy模块中的numpy.sum()方法得到的结果是Int64,而使用默认的sum()得到的结果是Int类型。
下面代码中,虽然执行结果a和b的数值都是6,但是类型不同。
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import numpy as np
# a 的类型是int64
a = np.sum([1,2,3])
# b 的类型是int
b = sum([1,2,3])
int64不会报除0的错误(事实上numpy中的其他类型也不会报错,比如float64等);而int会报除0错误(其他基本类型也会,比如float等)
6,sorted函数
对sequence进行排序,直接看例子:
>>> s = [('a', 3), ('b', 2), ('c', 1)]
>>> sorted(s, key=lambda x:x[1])
s = [('a', 3), ('b', 2), ('c', 1)]
更多例子:
>>> l = ['foo', 'bar', 'far']
>>> map(lambda x: x.upper(), l)
['FOO', 'BAR', 'FAR']
>>> filter(lambda x: 'f' in x, l)
['foo', 'far']
>>> map(lambda x: x.upper(), filter(lambda x: 'f' in x, l))
['FOO', 'FAR']
>>> reduce(lambda a, b: a * b, xrange(1, 5)) # 计算 1*2*3*4 = 24
24
7,序列解包(for x,y in zip(keys,values):)详解
序列解包是一个非常重要和常用的一个功能,使用序列解包可以用非常简洁的方法完成复杂的功能。增强代码的可读性,减少代码量。
zip函数接受多个(包括0个和1个)序列作为参数,返回一个tuple列表。
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
a, b, c = 1, 2, 3
print(a, b, c)
test_tuple = (False, 3.5, 'test')
d, e, f = test_tuple
print(d, e, f)
x, y, z = map(str, range(3))
print(x, y, z)
输出结果为:
1 2 3
False 3.5 test
0 1 2
7.2 序列解包也可以用于列表和字典
字典的话默认是对“key” 进行操作,如需对“key”----“value” 进行操作则需要使用字典的items()方法进行操作。“value” 进行操作的话就使用values进行操作。
#列表进行解包
a = [1, 2, 3, 5, 6]
b, c, d, f, g = a
print(b, c, d, f, g)
print('---------------------------')
#字典进行解包
test_dicts = {'a': 'x', 'b': 1, 'c': 3}
q, w, e = test_dicts
r, t, y = test_dicts.items()
i, o, p = test_dicts.values()
print(q, w, e)
print(r, y, t)
print(i, o, p)
输出结果:
1 2 3 5 6
---------------------------
a b c
('a', 'x') ('c', 3) ('b', 1)
x 1 3
7.3 用序列解包同时遍历多个序列
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
list_1 = [1, 2, 3, 4]
list_2 = ['a', 'b', 'c']
for x, y in zip(list_1, list_2):
print(x, y)
结果:
1 a
2 b
3 c
7.4 Python3.x和Python2.x在zip函数的区别
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
#注意:Python3.x和Python2.x这里的差别
#Python3.x
xyz = list(zip(x, y, z))
#Python2.x
#xyz = zip(x, y, z)
print(xyz)
#输出结果:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
本文来自博客园,作者:I'm_江河湖海,转载请注明原文链接:https://www.cnblogs.com/jhhh/p/16760744.html