【bytes】

英文文档:

class bytes([source[, encoding[, errors]]])

Return a new “bytes” object, which is an immutable sequence of integers in the range 0 <= x < 256bytes is an immutable version of bytearray – it has the same non-mutating methods and the same indexing and slicing behavior.

Accordingly, constructor arguments are interpreted as for bytearray().

说明:

1. 返回值为一个新的不可修改字节数组,每个数字元素都必须在0 - 255范围内,是bytearray函数的具有相同的行为,差别仅仅是返回的字节数组不可修改。

2. 当3个参数都不传的时候,返回长度为0的字节数组

>>> b = bytes()
>>> b
b''
>>> len(b)
0

3. 当source参数为字符串时,encoding参数也必须提供,函数将字符串使用str.encode方法转换成字节数组

>>> bytes('中文') #需传入编码格式
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
bytes('中文')
TypeError: string argument without an encoding
>>> bytes('中文','utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'

4. 当source参数为整数时,返回这个整数所指定长度的空字节数组

>>> bytes(2)
b'\x00\x00'
>>> bytes(-2) #整数需大于0,用于做数组长度
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
bytes(-2)
ValueError: negative count

5. 当source参数为实现了buffer接口的object对象时,那么将使用只读方式将字节读取到字节数组后返回

6. 当source参数是一个可迭代对象,那么这个迭代对象的元素都必须符合0 <= x < 256,以便可以初始化到数组里

>>> bytes([1,2,3])
b'\x01\x02\x03'
>>> bytes([256,2,3])
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
bytes([256,2,3])
ValueError: bytes must be in range(0, 256)

7. 返回数组不可修改

>>> b = bytes(10)
>>> b
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>> b[0]
0
>>> b[1] = 1 #不可修改
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
b[1] = 1
TypeError: 'bytes' object does not support item assignment >>> b = bytearray(10)
>>> b
bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
>>> b[1] = 1 #可修改
>>> b
bytearray(b'\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00')

print(bytes([100,103,97])) #b'dga'
print(bytes('d','utf-8')) #b'd'
print([ord('d')]) #[100]
print(bytes([ord('d')])) #b'd'
 
 
【bytearray&bytes&str】
 
#bytes和bytearray 的区别就是,前者是不可变的,后者是可变的。【备注】同样不可变的还有str
#用法:单纯参数是数字,则表示长度,如果不是一个数字参数,则要加encoding。没有参数就是空的字节序列或字节数组
#经过memoryview()处理过的对象和对此对象的切片,这两个memory对象是不一样的,但这并不影响memoryview()实际的功能。 b = bytes()
print(b) #b''
print(len(b)) #0
#print(bytes('中文')) #TypeError: string argument without an encoding
print(bytes('中文','utf-8')) #b'\xe4\xb8\xad\xe6\x96\x87'
print('中文'.encode('utf-8')) #b'\xe4\xb8\xad\xe6\x96\x87' print(bytes(2)) #指定长度的空字节数组 b'\x00\x00'
#print(bytes(-2)) #ValueError: negative count print(bytes([1,2,3])) #b'\x01\x02\x03'
print(bytes([1]))
#print(bytes([256,4,7])) #ValueError: bytes must be in range(0, 256) b = bytes(10)
print(b) #b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
print(b[0]) #0
#b[1] = 1 #不可修改 TypeError: 'bytes' object does not support item assignment
b = bytearray(10)
print(b) #bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
b[1] = 1
print(b) # 可修改 bytearray(b'\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00') #不使用memoryview
a = 'aaaaaa'
b = a[:2] #会产生新的字符串
print(a)
print(b)
#b[:2] = 'bb' #TypeError: 'str' object does not support item assignment 【备注】string是一种不可变的数据类型 a = bytearray('aaaaaa','utf-8')
b = a[:2] #会产生新的bytearray
print(a) #bytearray(b'aaaaaa')
print(b) #bytearray(b'aa')
b[:2] = b'bb'
#对b的改动不影响a
print(a) #bytearray(b'aaaaaa')
print(b) #bytearray(b'bb') #使用memoryview
a = b'aaaaaa'
ma = memoryview(a) #memoryview()的参数在Python3中是bytes或bytearray
print(ma.readonly) #True
mb = ma[:2] #不会产生新的字符串
print(ma) #<memory at 0x0000000001FE5F48>
print(mb) #<memory at 0x00000000027C2048>
#mb[:2] = b'bb' #TypeError: cannot modify read-only memory 【备注】和对str不能做切片片的原因类似,都是不可变的 a = bytearray('aaaaaa','utf-8')
ma = memoryview(a)
print(ma.readonly) #False
mb = ma[:2] #不会产生新的bytearray
#不会产生新的bytearray并不代表mb这个对象就等于ma这个对象,实际的验证还要往下看
print(ma) #<memory at 0x0000000002202108>
print(mb) #<memory at 0x0000000000445F48>
mb[:2] = b'bb'
#不会产生新的bytearray的验证就在下面,对mb的改动就是对ma的改动
print(mb.tobytes()) #b'bb'
print(ma.tobytes()) #b'bbaaaa' 【引申】
typecode = 'd'
bytes1 = bytes([ord(typecode)])
import array
bytes2 = bytes(array.array(typecode,[3.0,4.0]))
print (bytes1)
print (bytes2)
cotets = bytes1 + bytes2
print (cotets)
memv = memoryview(cotets[1:]).cast(typecode)
print (memv)
print (memv.tobytes())
print (*memv)
import array
print (array.array('d',memv))
print (*[3.0,4.0]) '''
b'd'
b'\x00\x00\x00\x00\x00\x00\x08@\x00\x00\x00\x00\x00\x00\x10@'
b'd\x00\x00\x00\x00\x00\x00\x08@\x00\x00\x00\x00\x00\x00\x10@' b'\x00\x00\x00\x00\x00\x00\x08@\x00\x00\x00\x00\x00\x00\x10@'
3.0 4.0
array('d', [3.0, 4.0])
3.0 4.0
''' #这里的Vector2d是我自定义的类,有__iter__()方法

【array】

1⃣️ 和list

【栗子】

import array
myarr = array.array('l', [8, 3, 6, 1])
print(myarr.tolist()) #[8, 3, 6, 1]
list1 = [3,6,8,9]
arr = array.array('l',list1)
print(arr) #array('l', [3, 6, 8, 9])

2⃣️枚举&常用方法

array使用方法:
Type code   C Type             Minimum size in bytes
        'c'         character                       1
        'b'         signed integer              1
        'B'         unsigned integer        1
        'u'         Unicode character       2
        'h'         signed integer            2
        'H'         unsigned integer         2
        'i'         signed integer            2
        'I'         unsigned integer         2
        'l'         signed integer            4
        'L'         unsigned integer         4
        'f'         floating point              4
        'd'         floating point              8
from array import *
创建一个interger类型的数组
myarr = array("l")  <--------创建数组
myarr.append(3)  <----------------追加元素
myarr.append(1)
myarr.append(8)

删除最后一个
myarr.pop()
删除第一个指定的X
myarr.remove(x)

取数组的值。。。。。通过下标
num1 = myarr[0]   <-----------第一个值

指定位置,。。。。插入值   

myarr.insert(6,10)  6表示下标。。。。10表示要插入的值

数组反序。。。。。
myarr.reverse()

【栗子】

import array

myarr = array.array('l')
print(myarr) #array('l')
myarr.append(3)
print(myarr) #array('l', [3])
myarr.append(1)
myarr.append(8)
print(myarr) #array('l', [3, 1, 8])
myarr.pop()
print(myarr) #array('l', [3, 1])
myarr.remove(3)
print(myarr) #array('l', [1])
myarr.append(3)
myarr.append(8)
num1 = myarr[0]
print(num1) #1
myarr.insert(1,6)
print(myarr) #array('l', [1, 6, 3, 8])
myarr.reverse()
print(myarr) #array('l', [8, 3, 6, 1])
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

【Python】【内置函数】【bytes&bytearray&str&array】的更多相关文章

  1. Python内置函数(13)——bytearray

    英文文档: class bytearray([source[, encoding[, errors]]]) Return a new array of bytes. The bytearray cla ...

  2. Python内置函数(7)——bytearray

    英文文档: class bytearray([source[, encoding[, errors]]]) Return a new array of bytes. The bytearray cla ...

  3. 第8.17节 Python __repr__方法和__str__方法、内置函数repr和str的异同点对比剖析

    一. 引言 记得刚开始学习Python学习字符串相关内容的时候,查了很多资料,也做了些测试,对repr和str这两个函数的返回值老猿一直没有真正理解,因为测试发现这两个函数基本上输出时一样的.到现在老 ...

  4. Python内置函数(12)——str

    英文文档: class str(object='') class str(object=b'', encoding='utf-8', errors='strict') Return a string  ...

  5. Python内置函数(61)——str

    英文文档: class str(object='') class str(object=b'', encoding='utf-8', errors='strict') Return a string ...

  6. Python 内置函数笔记

    其中有几个方法没怎么用过, 所以没整理到 Python内置函数 abs(a) 返回a的绝对值.该参数可以是整数或浮点数.如果参数是一个复数,则返回其大小 all(a) 如果元组.列表里面的所有元素都非 ...

  7. 【转】python 内置函数总结(大部分)

    [转]python 内置函数总结(大部分) python 内置函数大讲堂 python全栈开发,内置函数 1. 内置函数 python的内置函数截止到python版本3.6.2,现在python一共为 ...

  8. python内置函数,匿名函数

    一.匿名函数 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lambda n ...

  9. python 内置函数总结(大部分)

    python 内置函数大讲堂 python全栈开发,内置函数 1. 内置函数 python的内置函数截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就是pytho ...

  10. Python之路(第八篇)Python内置函数、zip()、max()、min()

    一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算,如果全部都是true,就返回true, 但是如果是空字符串.空列表也返回t ...

随机推荐

  1. [py]python的私有变量

    参考 python中并没有真正意义上的私有成员,它提供了在成员前面添加双下划线的方法来模拟类似功能.具体来说: _xxx 表示模块级别的私有变量或函数 __xxx 表示类的私有变量或函数 这被称为na ...

  2. 实习培训——Java基础(3)

    实习培训——Java基础(3) 1 Java 继承 1.1  super和this关键字 super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类. this关键字 ...

  3. 如何快速获取ListView的打气筒对象

    简单的方式有三种: @Override public View getView(int position, View convertView, ViewGroup parent) { View vie ...

  4. 机器学习理论基础学习17---贝叶斯线性回归(Bayesian Linear Regression)

    本文顺序 一.回忆线性回归 线性回归用最小二乘法,转换为极大似然估计求解参数W,但这很容易导致过拟合,由此引入了带正则化的最小二乘法(可证明等价于最大后验概率) 二.什么是贝叶斯回归? 基于上面的讨论 ...

  5. HTML鼠标悬停改变样式

    a.tt:hover {color: #FF0000;} <a class="tt" href="test.html">test</a> ...

  6. 003-ubuntu上安装mysql

    安装如下: 1.安装服务端:# sudo apt-get  install mysql-server. 2.安装客户端:# sudo apt-get -y install mysql-server. ...

  7. vue性能优化1--懒加载

    懒加载也叫延迟加载,即在需要的时候进行加载.随用随载.为什么需要懒加载?像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要加载的内容过多,时间 ...

  8. python解决matplotlib中文坐标值乱码的问题

    加上这句话即可 plt.rcParams['font.sans-serif']=['SimHei'] 效果:

  9. 20155308 2016-2017-2 《Java程序设计》第9周学习总结

    20155308 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 第十六章 整合数据库 16.1 JDBC入门 驱动的四种类型 JDBC-ODBC Bridg ...

  10. mysql B+Tree索引

    原文地址:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 数据结构及算法基础 索引的本质 MySQL官方对索引的定义为:索 ...