其它内置函数(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对象. 这个可迭代对象可以使用循环的方式列出其元素 若多个可迭代对象的长度不一致,则所返回的 ...
随机推荐
- F. Cooking Time 贪心
http://codeforces.com/gym/101498/problem/F 对于知道使用情况的置换算法,最优解是找一个最后需要使用的物品替换掉 也就是,如果一个物品后面已经不需要用到,就要拿 ...
- 为什么CPU缓存会分为一级缓存L1、L2、L3?有什么意义?
https://baijiahao.baidu.com/s?id=1598811284058671259&wfr=spider&for=pc 简介:CPU缓存是CPU一个重要的组成部分 ...
- jquery mobile - select and input - horizontal - in same line
控件组合的水平布局 select + input 在同一行 注意jquery mobile 的js 和css 的版本, 一些低版本 估计不支持 <!DOCTYPE html> <ht ...
- Ruby on Rails 中你使用了Kaminari 后,千万不要再引入will_pagination 这个Gem 了
今日做开发的时候发现的这个问题 发现无论怎样配置都不能使用Kaminari 的Per 这个功能,分页大小也固定在了30 最开始还以为是Ransack 这个Gem 影响的,上网搜了很久发现没有 最后仔细 ...
- GOPS 2018全球运维大会上海站 参会感悟梳理
今天遇到很多优秀的讲师.业界的大伽,很开心 现在把get到的信息梳理一下:(1)想解决性能问题,一定要在缓存上下功夫:[nginx上有好多文章可以做,真是博大精深呢<深入理解Nginx:模块开发 ...
- 初步学习XML的基本代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Slickflow.NET 开源工作流引擎基础介绍-.NET Core2.0 版本实现介绍 (转)
前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows.Mac OSX.Linux) 的应用程序开发框架(Application Framew ...
- IntelliJ IDEA实时模板变量
返回由当前方法返回的值的类型IntelliJ IDEA 实时模板中的模板变量允许用户输入.扩展模板后,变量将作为输入字段显示在编辑器中. IntelliJ IDEA 声明实时模板变量 模板中的变量以下 ...
- C语言函数调用简简介
1.函数的声明: 在编写程序时,首先要对函数进行声明,然后对函数进行定义: 函数的声明是要让编译器知道函数的名称.参数.返回值类型等信息: 函数的定义是要让编译器知道函数的功能: 函数声明的格式由函数 ...
- elasticsearch复杂查询-----2
1.多条件查询 1)查询索引weibo下字段date大于或等于2015-09-05和name为Mary Jone的数据 2.简单查询 1)查询包含2014字符的数据 2)查询包含字符2014-09-1 ...