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----复数,表示可以一次输出多 ...
随机推荐
- Codeforces 140F(坐标系点对称)
要点 结论:如果坐标系一堆点两两对称于某一重心,则排序后第1个和第n个为一对,以此类推. 枚举所有可能的重心点并check.因为隐藏的点不超过k个,所以点1-k+1都可能跟第n个匹配.对右侧同样适用, ...
- 1e9个兵临城下(容斥原理)
链接:https://ac.nowcoder.com/acm/contest/321/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 关于MySQL索引的一点小见解
索引: 优缺点: 1.用的合理可以提高查询效率 2.建立过多索引会占用物理和数据空间,同时也会降低插入和更新效率 需不需要建立索引: 1.一般表的数据低于2000条就不用建立索引了,超过2000条酌情 ...
- NET Core 事件总线
NET Core 事件总线,分布式事务解决方案:CAP 背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用的过程中 ...
- SpringBoot---Web开发---WebSocket
[广播式] 1. <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht ...
- Zeppelin的入门使用系列之使用Zeppelin运行shell命令(二)
不多说,直接上干货! 前期博客 Zeppelin的入门使用系列之创建新的Notebook(一) 接下来,我将以ml-100k数据集,示范如何使用Spark SQL进行数据分析与数据可视化 因为 [ha ...
- Spring-boot原理(附带实现一个spring-boot-starter实例和代码下载)
(我就是个封面) Spring-boot自出现后,到现在火的很,大家貌似都在用,连招聘里面也要求会这个.但是说实话,spring-boot无外乎想实现一种可插拔的编程方式,说是简化配置,其实并没有 ...
- 微信小程序tabBar显示问题
在微信小程序的开发中,我遇到疑惑如下: 在app.json中定义了多个pages,一般微信小程序启动的时候,自动加载pages下的第一个页面, "pages": [ ...
- 【踩坑】List 的陷阱
今天测试iReview项目数据的反馈,发现有些语句总无法执行. 经过调试排查后,发现List<自定义类>返回了空集"[]",却无法进入if语句里面,即 if (List ...
- 集合、迭代器、增强for循环、泛型
1集合 集合是java中提供的一种容器,可以用来存储多个数据. 数组的长度是固定的.集合的长度是可变的.集合中存储的元素必须是引用类型数据. 1.1ArrayList集合存储元素(复习) 例: pub ...