其它内置函数(zip等)
python内置函数
截止到python版本3.6.2,python一共为我们提供了68个内置函数。它们就是python提供给你直接可以拿来使用的所有函数
思维导图:https://www.processon.com/mindmap/5a97b9d7e4b083b043a1dcd5
以下是具体分布:
python所用内置函数:
https://docs.python.org/3/library/functions.html
http://www.cnblogs.com/sesshoumaru/category/894935.html
以下需常看的内容:
算法相关 # divmod() 这个做项目后期会用到
print(divmod(10, 3)) # 取商/余
---(3, 1) # round()
print(round(3.1415926, 2)) # 求取精确度,保留两位小数
---3.14 # power()
print(pow(2, 3)), print(2**3) # 求幂运算,两个等同
---8 # complex:函数用于创建一个值为real + imag*j的复数或者转化一个字符串或数为复数。
如果第一个参数为字符串,则不需要指定第二个参数。
complex(1,4)
---(1+4j)
complex(1) # 数字
---(1 + 0j)
complex("1") # 当做字符串处理
---(1 + 0j) # abs(): 如果输入是整数或者浮点数,它返回的是输入值的绝对值;
如果输入是复数(complex number),那么返回这个复数的模 # reversed() 顺序的反转
l = [1, 2, 3, 4]
print(list(reversed(l))) # 是生成了一个新的列表,没有改变原来的列表
---[4,3,2,1]
l.reverse() # 在现在的列表的基础上修改了,修改的是原来的列表
print(l)
---[4,3,2,1]
--------------------------------------------------------------------------------------------
内存相关 # hash:获取可哈希对象(int,str,Bool,tuple)的的哈希值
(如果在Python中需要对用户输入的密码或者其他内容进行加密,出于安全性考虑首选的方法是生成hash值)
print(hash('arg'))
-8969565126408161272 # 这里虽然一次运行时值是一致的,但是重新运行时得到的值就不相同了,详见知乎
print(hash(True)) # 1
print(hash(False)) # 0 # id:返回对象的唯一标识符,用整数表示。在程序生命周期内,这个标识符常量是唯一的。
id(2)
---1940280128
--------------------------------------------------------------------------------------------
进制转换相关 # bin:将十进制转换成二进制并返回
# oct:将十进制转化成八进制字符串并返回
# hex:将十进制转化成十六进制字符串并返回
print(bin(5), type(bin(5)))
---0b101 <class 'str'>
print(oct(5), type(oct(5)))
---0o5 <class 'str'>
print(hex(5), type(hex(5)))
---0x5 <class 'str'>
---------------------------------------------------------------------------------------------
字符串相关
# repr:返回一个对象的string形式(原形毕露,连引号都给打印出来了)
print(repr('{"name":"alex"}'))
---'{"name":"alex"}'
print('{"name":"alex"}')
---{"name":"alex"}
(这里其实就和格式化字符串概念一样)
%r ---是什么就返回什么
%d ---返回整形数字
%f ---返回浮点型数字
%s ---返回字符串类型 # format:与具体数据相关,用于计算各种小数,精算等,此外这个用于格式化输出很重要(详见我的博客第二节)
# 字符串可以提供的参数,指定对齐方式,<是左对齐, >是右对齐,^是居中对齐
print(format('test', '<20'))
print(format('test', '>20'))
print(format('test', '^20'))
其他用法详见链接:http://www.cnblogs.com/jin-xin/articles/8423937.html # bytes:用于不同编码之间的转换,只能编码,将unicode ---> 非unicode bytes(s1,encoding='utf-8')。
print('你好'.encode('utf-8'))
---b'\xe4\xbd\xa0\xe5\xa5\xbd'
bs = bytes('你好', encoding='utf-8')
print(bs)
---b'\xe4\xbd\xa0\xe5\xa5\xbd'
(两个结果是一样的,但是明显没有直接encode好用) # ord:输入字符找该字符编码的位置 unicode
# chr:输入位置数字找出其对应的字符 unicode
# ascii:是ascii码中的返回该值,不是就返回\u...
print(ord('a'))
---97
print(ord('中'))
---20013
print(chr(97))
---a
print(chr(20013))
---中
print(ascii('a'))
---'a'
print(ascii('中'))
---'\u4e2d' # bytearry:返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256
ret = bytearray('alex', encoding='utf-8')
print(id(ret))
---2448694454456
print(ret)
---bytearray(b'alex')
print(ret[0]) # 找到字母a对应ascll表的位置
---97
ret[0] = 65 # 将其通过修改ascll表的位置对其字母进行修改
print(ret)
---bytearray(b'Alex')
print(id(ret))
2448694454456 # 对其修改完但是它的id并没有发生改变 # memoryview:
ret = memoryview(bytes('你好',encoding='utf-8'))
print(len(ret))
---6
print(ret) # 打印出内存地址
---<memory at 0x0000021B7F2BB1C8>
print(bytes(ret[:3]).decode('utf-8')) #通过内存地址切片
---你
print(bytes(ret[3:]).decode('utf-8'))
---好
---------------------------------------------------------------------------------------------
字符串代码执行相关 # eval函数() # 执行字符串类型的代码,并返回最终结果
print(eval('3+5'))
---8
num = eval('6+8+5')
print(num) # 执行了有返回值
---19 # exec()函数 # 执行字符串类型的代码,它属于流程语句
num = exec('6+8+5')
print(num) # 执行但是没有返回值
---None ret1 = '''
li = [1,2,3]
for i in li:
print(i)
'''
print(exec(retl))
---1
---2
---3
---None # compile # 将字符串类型的代码翻译,代码对象能够通过exec()语句执行或者是eval()进行求值
'''
参数说明: 1. 参数source:字符串或者动态执行的代码段。 2. 参数filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
当传入了source参数时,filename参数传入空字符即可。 3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’
当source中包含流程语句时,model应指定为‘exec’;
当source中只包含一个简单的求值表达式,model应指定为‘eval’;
当source中包含了交互式命令语句,model应指定为'single'。
''' # 流程语句使用exec
code1 = 'for i in range(0,3): print (i)'
compile1 = compile(code1, '', 'exec')
exec(compile1)
---0
---1
---2 # 简单求值表达式用eval
code2 = '1 + 2 + 3 + 4'
compile2 = compile(code2, '', 'eval')
print(eval(compile2))
---10 # 交互语句用single # 略,看不懂,也用不上
-------------------------------------------------------------------------------------------
其他容易遗忘的知识点 # help():用于查看函数或模块用途的详细说明 # dir():函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;
带参数时,返回参数的属性、方法列表。 # callable:函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
def func1():
print(555)
a = 3
f = func1
print(callable(f))
---True
print(callable(a))
---False
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),
a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
d = zip(a,b)
print(list(d))
---[(1, 4), (2, 5), (3, 6)]
d = dict(zip(a,b)) # 通过使用zip函数来构造字典
print(d)
---{1: 4, 2: 5, 3: 6}
d = {} # 也是字典类型
for k,v in zip(a,b) : d[k] = v
print(d)
---{1: 4, 2: 5, 3: 6}
l = ['a', 'b', 'c', 'd', 'e','f']
a = list(zip(l[:-1], l[1:])) # l[:-1]后面'f'没取,l[1:]前面'a'没取
print(a)
---[('a', 'b'), ('b', 'c'), ('c', 'd'), ('d', 'e'), ('e', 'f')]
二维矩阵变换:
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [[row[col] for row in a] for col in range(len(a[0]))]
print(b)
---[[1, 4, 7], [2, 5, 8], [3, 6, 9]] a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
c = list(zip(*a))
print(c)
---[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
d = map(list,zip(*a))
print(list(d))
---[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
其它内置函数(zip等)的更多相关文章
- python3 之 内置函数Zip
python3 内置函数zip 一.简介: 该函数用于将多个可迭代对象作为参数,依次将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象.二.实例1: name = ['张三','李四', ...
- python 内置函数zip,map,三元,lambda表达式
#内置函数zip(),将多个可迭代对象(集合等)按照顺序进行组合成tuple元祖,放在zip 对象进行存储,: #当参数为空时候,返回空 #如果 zip() 函数压缩的两个列表长度不相等,那么 zip ...
- Python 内置函数 -- zip(), sorted(), filter()和map()
内置函数1. zip() 打包(木桶效应)描述: zip() 函数用于将可迭代的对象作为参数, 将对象中对应的元素打包成一个个元组, 然后返回由这些元组组成的列表语法: zip([iterable, ...
- 内置函数zip,map,even
内置函数的补充:1.zip:l1 = ['a','b','c','e','f','g']l2 = [1,2,3]l3=['A','B','C']L4=['牛','牛','niu']#zip,就是把俩l ...
- python内置函数zip
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以 ...
- 内置函数zip()
zip有拉链的意思,zip函数像拉链一样将0个或多个可迭代对象按相同位置组合成一个zip对象,该zip对象的每个元素是由每个可迭代对象的相同位置的元素组成的元祖. 如果zip中有多个序列,而各序列的长 ...
- Python学习笔记014——迭代工具函数 内置函数zip()
1 描述 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操 ...
- python学习笔记(十六)内置函数zip、map、filter的使用
1.zip,就是把两个或者多个list,合并到一起,如果想同时循环2个list的时候,就使用zip.示例如下: l1 = ['a','b','c','e','f','g'] l2 = [,,] l3= ...
- Python:内置函数zip()
zip函数接受任意多个可迭代对象作为参数,将对象中对应的元素打包成一个tuple,然后返回一个可迭代的zip对象. 这个可迭代对象可以使用循环的方式列出其元素 若多个可迭代对象的长度不一致,则所返回的 ...
随机推荐
- DRF-->2序列化组件的使用和接口设计--get,post,put,delete&优化组件
!!!!! !!!!! 记住这个图 !!!!! 上篇博客说道DRF序列化组件的get,只是简单的举一个实例,然而在现实生活中我们前后端进行交互的时候更多的用到了Json数据格式,这也就是说前后端交互的 ...
- iscroll.js文档
iScroll是高性能的.小尺寸的.无依赖关系的.支持多平台的滑动JavaScript库. 当然,不只是scroll,还有滚动.缩放.平移.无限滚动.视差滚动等. 为了达到更好的新能,所以iScrol ...
- 牛客网Java刷题知识点之输入流、输出流、字节流、字符流、字节流的抽象基类(InputStream、OutputStream)、字符流的抽象基类(Reader、Writer)、FileWriter、FileReader
不多说,直接上干货! IO流用来处理设备之间的数据传输. java对数据的操作是通过流的方式. java用于操作流的对象都在IO包中. IO流按操作数据分为两种:字节流和字符流. IO流按流向分为:输 ...
- Building the main Guest Additions module [FAILED]
虚拟机中的centos7安装vbox的增强工具报错 Building the main Guest Additions module [FAILED] 查看日志发现 unable to find th ...
- [转] Java集合类详解
集合类说明及区别Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMap ...
- Android 程序结构介绍
创建好Android开发环境后,创建一个Android Project, 截图如下:
- maven课程 项目管理利器-maven 3-7 maven依赖范围 2星
本节主要讲了maven的依赖范围: 在pom.xml dependency标签的scope中.eclipse中有编译的路径,maven中有编译,运行,测试的路径. 1 scope为test,为测试 ...
- 各种推导式<"一行能解决的事,为什么要用那么多行">
一.推导式 1.列表:[结果 for循环 条件筛选] 2.字典:{k:v for循环 条件筛选} 3.集合推导式{k for循环 条件筛选} ???为什么没有元组推导式 二.生成器表达式(元组表达式) ...
- 102001 E
x轴上方给你n个点,m个水平杆子, 然后q组询问,每次询问一个点,问能看到多少个点. n,q<=40000,m<=5 自闭了呀,又写了个 for(int i=1;i<(1<&l ...
- 零基础逆向工程35_Win32_09_临界区_CRITICAL_SECTION结构
1 引入 为什么会存在临界区这中机制呢?是为多线程同时访问全局变量而引入的.也就是上一篇帖子的末尾流出的问题程序的解决办法. 看懂了上面的,那么我们再罗嗦总结一下: 1.多线程访问全局变量时,存在线程 ...