小编这周末有空。 当然是先熬夜玩——瘫痪了12个小时,才开始更新。 还敬业吗?
今天开始总结python的内置函数,问我为什么这么写。 渐渐觉得很多东西可以不用引入包直接调用。 那给我的感觉,内置函数应该是掌握的基础,而且会很强大。 这些功能是基于你所掌握的。
题目:今天涉及到的主要是计算机代码转换中涉及的函数,跳到这里是为了把可比较的放在一起
优点:每个函数除了有解释和例子,还有一些题目的推导!
/目录/
abs() &all()& any() (遵循前三个函数)
位,字节,字符,编码方式,整理二进制概念
ascii()&repr(), ord() 和 chr()
bin() 和 int()
布尔()
字节数组()和字节()
leetcode使用bytearray解决问题
字符类型与基数转换梳理
Tips:进入今天的话题之前,先放个小总结,迷茫的时候也可以回放一下
bit:比特,计算机数据存储的最小单位; 0 或 1 二进制是位
字节:一个字节 = 8 位或 8 个二进制位
字符:字母、汉字、符号等都是字符,
计算机有不同的编码方法。 在不同的编码方式下,字符占用不同的字节。
编码:将字符串按照不同的编码编码成字节序列bytes
解码:将字节序列bytes按照不同的解码方式解码成字符串
为什么我们需要更改编码? 因为计算机是以处理数字的思想来运作的。 如果我们要处理文本,我们通常会将文本转换成数字,然后再进行处理。 自然,文本和数字都有相应的编码。 (计算机是二进制值,比如A对应数字65,计算机对应的二进制值为01000001)
以上 – 内置函数
让我们按顺序排列前三个函数
abs() :返回绝对值
abs(-1)
想想数学中的绝对值:fabs
import math
math.fabs(-1)
所有()和任何():
全部
任何
def all(iterable):
for element in iterable:
if not element:
return False
return True
def any(iterable):
for element in iterable:
if element:
return True
return False
all([1,2,3])
all([1,0,3])
all([1,False,3])
all([1,'',3])
all([])
返回:真、假、假、假、真
那么这个传入的可迭代对象必须是可回收的吗?
对,什么类型可以回收?想到了常见的list,tuple,dict等,哈哈,感觉又是另外一个话题
应用它吗?
data = pd.read_csv('xxxxxxx.csv')
data.isnull().any()
data.isnull().all()
df = np.arange(24).reshape(4,2,3) # 创建矩阵
if np.any(df[:5,:]==0):
print('yes')
返回:是的
编码问答
ASCII 是编码形式。 为了方便理解,我们先回答问题。
ASCII对应什么?
ASCII编码 美国制定的字符编码,对应的是英文字符与二进制(0, 1)的关系。 ASCII 一共规定了 128 种字符编码。
见过乱码吗?
当然1个汉字占几个字节,比如你用ascii格式来识别其他编码文件。
它只是ASCII吗?
当然不是,128字符编码英文就够了,其他语言呢,我们想想汉字,这是我们常见的unicode,小编觉得uni有一种宇宙或独一无二的感觉哈哈,理解为统一世界哈哈,它为每种语言中的每个字符设置了统一且唯一的二进制编码。 它的优点和缺点可以自己发现。 以及utf-8、utf-16等。
通俗地说,这些代码都有自己的转换方式。
ascii() 和 repr() , ord() 和 chr()
ascii() 返回表示对象的字符串,如果不是ASCII编码,则使用x、u或U等字符表示
repr()返回表示对象的字符串,repr对于非ASCII编码不使用上述方法
ord() 返回字符的编码表示 – 传入长度为 1 的字符串
chr() 返回编码对应的字符,即chr() ord() 反之
尝试一下
我们试试货币符号$、€(感觉欧元不是ASCII英文编码的),所以非编码产生u字符
bin() 和 int()
小编刚才不是说计算机都是二进制的吗? 那我们如何获取和转化它呢?
bin() – 传入参数int,返回二进制字符串,binary
int() – 第一个数字作为参数字符串传入,第二个数字作为转换方法传入
怎么会有0b? 当然二进制码在0b之后。 如果我不想用代码转换成原来的数字,那加0b呢? 可以直接输入二进制数进行转换吗,可以,看int()
哈哈别忘了,我们原来是用十进制表示的
布尔()
将其视为布尔值 – T 或 F
常见会判断为F的情况:None, False, 0, empty,
应用:是否输入了某个值?
我没有为第二个输入数字,所以 bool(y.strip()) 返回了 False
字节数组()和字节()
bytearray 是可变的字节序列,称为字节数组
bytes是不可变的字节序列(如有混淆,返回开头的总结提示)
这样做:创建字节和字节数组
ps:find的作用是找到对应的索引,replace是替换,看下面问题解锁
字节解锁Leetcode问题
我们使用 bytearray 解开 leetcode 中的一道题
最大连续数:
给定一个二进制数组,找到该数组中连续 1 的最大数量。 输入:
[1,1,0,1,1,1] Output: 3 翻译过来就是找二进制数组中最大的连续1?
想一想:二进制? 01 表示字节不同? 也许字节表示可以用来截断?
哦,太棒了
转化类型摘要
类型转换
int(x)转为整数,long(x)转为长整数,float(x)转为浮点数,str(x)转为字符串,repr(x)转为表达式字符串,tuple(x) ) 转换为元组1个汉字占几个字节,list(x) 转换为列表,chr(x) 整数转换为字符,ord(x) 字符转换为相应的整数。
转换
bin(x) 转换为二进制
oct(x) 转换为八进制
int(x,base=10) 转换为十进制
hex(x) 转换为十六进制
说白了就是让计算知道我们传入的是什么,出于不同的考虑,它有不同的编码方式。 这些函数帮你类型转换,基数转换,还有相应的函数让你转换回/
别走,后面我们继续玩内置函数
晚安各位
结尾