Python基础(二)——常用内置函数
1. 常用内置函数
(1)isinstance(object, classinfo)
用于判断一个对象是否为某一类型。
- object 是实例对象
- classinfo 是基本类型如 int, float 或者是类名或者是由它们组成的元组。
print(isinstance(1, (int, str, float))) #True。实例 + 元组
print(isinstance('', dict)) #Flase 实例 + 基本类型
(2)type()
- type(Class) 输出<class 'type'>。type(实例) 输出 <class '类名'>
(3)map(function, iterable)
map(function, iterable) 产生一个将function应用于迭代对象中的所有元素并返回结果的迭代器。
from collections.abc import Iterator,Iterable def test(x):
return x * 2 L = map(test, [1,2,3]) print(L) #<map object at 0x0000020C55F14390>
print(isinstance(L, Iterator)) #true
print(list(L)) #[2, 4, 6].list(iterable) list是一个构造器,其中的项与 iterable 中的项相同。 print(list(map(str, [1,2,3,3]))) #['1', '2', '3', '3']
如上文所说,将 test() 函数应用于元素 1 * 2 = 2.....。其中第12行同第10行一致,注意通过list()函数将map()迭代器内容输出。
(4)reduce(function,iterable)
官网给了个例子:reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) 等价于 ((((1+2)+3)+4)+5) 。这里划线部分其实就是个函数,这个函数是实现 x + y,将改函数应用于右边的 iterable,但是和map的区别就是,这个reduce有一个累加效果,也就是将上一步计算的结果当作下一步计算的参数,如下:
from functools import reduce
def sum(x, y):
return x + y L = [1, 2, 3]
R = reduce(sum, L)
print(R) #
即第六行sum函数需要两个参数,参数从L中取为1,2。送入sum计算得到3,然后3当作x,L中的3当作y,继续送入sum函数计算,得到3 + 3 = 6
再看一个例子:
# 将字符串转成数字
from functools import reduce
dict = {'': 0, '': 1, '': 2, '': 3, '': 4, '': 5, '': 6, '': 7, '': 8, '': 9} #'124' -> ((0*10+1)*10+2)*10+4
def char2numb(c):
return dict[c] def calculate(x, y):
return x * 10 + y def str2numb(s):
return reduce(calculate, list(map(char2numb, s))) #结合使用map很关键,char2numb函数应用到字符串上
print(str2numb(''))
(5)匿名函数
匿名函数关键字是lambda,且函数不需要定义名称,比如:
def cube(y):
return y * y * y; g = lambda x: x * x * x # 将匿名函数赋值给一个变量g,再利用变量来调用该函数
print(g(7)) print(cube(5))
cube函数同g是相似的。lambda冒号前的是参数,可以多个,用逗号隔开,冒号右边是返回值。
lambda函数解和map和reduce一起使用:
li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61]
final_list = list(map(lambda x: x*2 , li))
print(final_list) #[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]
from functools import reduce
li = [1, 2, 3]
sum = reduce((lambda x, y: x * y), li)
print (sum) # 6
(个人觉得,也不是非lambda不可,是鸡肋吗?先在这埋下伏笔)
lambda 在闭包中的使用,看详看第六点。
(6)闭包(点击查看)
(7)filter(function,iterable)
用iterable中函数function返回真的那些元素,构建一个新的迭代器。官网上有两句话:①当function为None,则item for item in iterable if item。②当function不是None,item foritem in iterable if function(item)。
#①
print(list(filter(None,[0, 1, 33, False, None]))) # [1, 33] #②
def test(x):
return x % 2 == 0
print(list(filter(test, [1,2,3,4]))) # [2, 4] #又如
def not_empty(s):
return s and s.strip()
print(list(filter(not_empty, ['A', '', 'B', None, 'C', ' ']))) # ['A', 'B', 'C']
通过例子很好理解,不过多解释。
用filter筛选素数(廖雪峰网站):
def _odd_iter():
n = 1
while True:
n = n + 2
yield n def _not_divisible(n):
return lambda x: x % n > 0 def primes():
yield 2
it = _odd_iter() # 初始序列
while True:
n = next(it) # 返回序列的第一个数
yield n
it = filter(_not_divisible(n), it) # 构造新序列 # 打印1000以内的素数:
for n in primes():
if n < 1000:
print(n)
else:
break
因为这段代码比较复杂,尤其是第16行,所以在上文先铺垫了①匿名函数②闭包③生成器。
(8)sorted(iterable,*,key=None,reverse=False)
根据iterable中的项,将项按照key(带有单个参数的函数)处理,处理之后排序。
print(sorted([-9, 0 ,89, 22])) # [-9, 0, 22, 89] print(sorted([-9, 0, 22, 89], key=abs)) # [0, -9, 22, 89] # 忽略大小写(因为阿斯克码)按首字母排序
print(sorted("This is a test string from Andrew".split(), key=str.lower))
#['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
list.sort()的使用如[1, 2, 3, 1].sort()。但是效率没有sorted([1, 2, 3, 1])高。另一个区别是list.sort()只为列表定义,而sorted()可以用于任何迭代对象。
DICT = {1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}
print(sorted(DICT, reverse=True)) # [5, 4, 3, 2, 1]
(9)enumerate(sequence, [start=0])
此函数将一个可遍历对象组合成索引序列。一般用在 for 循环中
s = [4, 6, 7, 1]
for i in s:
print(i,end=' ') print('\n', '=======') for i in enumerate(s):
print(i, end='') # 输出 索引+值 的结构 print('\n', '=======') for b,i in enumerate(s):
print(b,i,end='|') print('\n', '=======') for b,i in enumerate(s, 99): # 99为自定义索引开始值
print(b,i,end='|')
输出结果:
4 6 7 1
=======
(0, 4)(1, 6)(2, 7)(3, 1)
=======
0 4| 1 6| 2 7| 3 1|
=======
99 4| 100 6| 101 7| 102 1|
2. 补充
(1) import VS from .... import
import sys
print('命令行参数为:')
for i in sys.argv:
print(i)
print('\n python 路径为',sys.path)
from sys import argv, path
print('命令行参数为:')
for i in argv:
print(i)
print('\n python 路径为', path)
(2)函数可以被安插在“任何”地方(in Python everything is an object)
这个怎么说呢,就是 Python 中的 function 真的无所不能,被用的神乎其神(我都被秀晕了QAQ),并不像 C/Java 中被固定的死死的,只能返回返回值被调用。至少学到现在,我发现Python中的函数不单单就是个函数,比如:
#函数嵌套函数
#嵌套在函数内部函数不能被外界调用,只能内部使用
def test(x, y):
def calculate(x):
return x * x
return calculate(x) + y
print(test(2, 2)) # #函数可以元组中的一项
L = [test, ''] #[<function test at 0x000001F196848A60>, '11']
print(L)
print(L[0](2, 2)) #
#最后一句就是取L的第一项[0],因为是test所以传入参数(2,2) #函数可以赋值给变量
g = test
print(g(2, 2)) # 6. g 现在也就是test()复制品 #函数当作参数传入函数如上文map
# 函数可以当返回值
def test():
def test2():
print('')
return test2 #注意不是写成 test2().加了括号就是调用test2(),然后此句return回test2()给的return了。可看后面的例子
g = test()
print(g) # <function test.<locals>.test2 at 0x000002721DDB8AE8> #例子
# def test():
# def test2():
# print('1111') # 1111
# return test2()
# print(test()) # None
以后遇到不断补充......
Python基础(二)——常用内置函数的更多相关文章
- Python 基础之常用内置函数
1.常用内置函数 (1)abs 绝对值函数 intvar = -9 res = abs(intvar)print(res) (2)round 四舍五入 (n.5 n为偶数则舍去 n.5 n为奇数 ,则 ...
- python基础之常用内置函数
前言 python有许多内置的函数,它们定义在python的builtins模块,在python的代码中可以直接使用它们. 常用的内置函数 类型转换 int python的整数类型都是int类型的实例 ...
- PYTHON语言之常用内置函数
一 写在开头本文列举了一些常用的python内置函数.完整详细的python内置函数列表请参见python文档的Built-in Functions章节. 二 python常用内置函数请注意,有关内置 ...
- Python基础学习五 内置函数
1.函数补充: 1)函数返回值return可以有多个 2)补充示例: nums = [0,1,2,3,4,5,6,7,8] #如何将list里面的元素变为字符串类型 new_nums = [str(x ...
- python基础学习笔记——内置函数
一. 简介 python内置了一系列的常用函数,以便于我们使用,python英文官方文档详细说明:点击查看, 为了方便查看,将内置函数的总结记录下来. 二. 使用说明 以下是Python3版本所有的内 ...
- python 基础篇 15 内置函数和匿名函数
------------------------>>>>>>>>>>>>>>>内置函数<<< ...
- python基础 (装饰器,内置函数)
https://docs.python.org/zh-cn/3.7/library/functions.html 1.闭包回顾 在学习装饰器之前,可以先复习一下什么是闭包? 在嵌套函数内部的函数可以使 ...
- python基础学习Day14 内置函数 匿名函数
一.内置函数里几个高频重要函数 (1)min\max函数的用法 以min函数的为例: min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值). l1 =[(,),(, ...
- python基础一 day15 内置函数
'\r' 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖: '\n' 换行,换到当前位置的下一行,而不会回到行首: # print()# input()# le ...
- Python学习笔记-常用内置函数
输出:print() 功能:输出打印 语法:print(*objects, sep=' ', end='\n', file=sys.stdout) 参数:objects----复数,表示可以一次输出多 ...
随机推荐
- D-温暖的签到题
链接:https://ac.nowcoder.com/acm/contest/892/D 题意: 给你一个长度为n的序列,初始为1,2,3...n,对其进行m次操作. 操作有两种: 1 l r 表示 ...
- jQuery解决ajax请求的跨域问题
这两天工作中频繁的遇到JS的跨域问题,都通过绕开ajax请求的方式.特地百度了一下,把跨域问题解决了.在这分析一下 首先贴上js的页面代码: <html> <head> < ...
- 最长回文子串--轻松理解Manacher算法
最长回文子串这个问题的Manacher算法,看了很多博客,好不容易理解了,做一下记录. 这个算法的核心就是:将已经查询过的子字符串的最右端下标保存下来,在计算下标为i的回文字符串时,不需要从左右相邻的 ...
- 转 AIX filesystemcache引发的Oracle事故
http://blog.itpub.net/26015009/viewspace-1806629/
- ORACLE行转列通用过程(转)
1.使用视图 SQL code? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 create or r ...
- VS2010/OpenGL配置
1.下载glut:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip 2.把解压得到的glut.h放到"C:\ ...
- JS移动端浏览器取消右划后退的几种方法
在开发过程中,发现我们公司所使用的APP有点BUG,在APP中打开网页.H5应用之后,处于首页时,轻微的右划触发了后退事件,导致直接退出网页或者H5应用的页面,这样使得很多需要交互的手势没办法使用.本 ...
- Ruby中访问控制符public,private,protected区别总结
重点关注private与protected public 默认即为public,全局都可以访问,这个不解释 private C++, “private” 意为 “private to this cla ...
- Java 设计模式之中介者模式
本文继续23种设计模式系列之中介者模式. 定义 用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互. 角色 抽象中介者: ...
- 第010课_掌握ARM芯片时钟体系
from:第010课_掌握ARM芯片时钟体系 第001节_S3C2440时钟体系结构 S3C2440是System On Chip(SOC),在芯片省不仅仅有CPU,还有一堆外设. 至于有哪些外设,可 ...