python内置类bytearray()详解

          bytearray 是 Python 的一个内置类,它提供了一个可变序列的字节数组。

  • bytearray 数组的元素必须是0-255之间的整数,这些整数对应于ASCII字符集中的数字。下面着张图是部分ASCII字符:

  • bytearray 是可变的,可修改其内容,而 bytes 是不可变的,不能修改。

创建 bytearray

  • 从整数序列创建
ba1 = bytearray([65, 66, 67])
#从ASCII表得知数字三个数字对应字符 'ABC'
  • 从字节串创建
ba2 = bytearray(b'ABC')
  • 从字符串创建(需要指定编码)
ba3 = bytearray('ABC', 'utf-8')
  • 初始化指定大小的字节数组,并用0填充
ba4 = bytearray(5) # 代表5个0

循环打印bytearray元素

s_array = bytearray(b"Hello world")
print(s_array)
for i in s_array:
   print(f'字节码对应的数字:{i} 转换为字符:{chr(i)}')

#结果
bytearray(b'Hello world')
字节码对应的数字:72 转换为字符:H
字节码对应的数字:101 转换为字符:e
字节码对应的数字:108 转换为字符:l
字节码对应的数字:108 转换为字符:l
字节码对应的数字:111 转换为字符:o
字节码对应的数字:32 转换为字符:
字节码对应的数字:119 转换为字符:w
字节码对应的数字:111 转换为字符:o
字节码对应的数字:114 转换为字符:r
字节码对应的数字:108 转换为字符:l
字节码对应的数字:100 转换为字符:d

方法介绍

字节数组bytearray的很多方法类似于之前讲过的list列表。

  • append(int): 追加一个字节到末尾。
#增加一个字符h,对应数字是104
s_array.append(104)
print(s_array)
#结果
bytearray(b'Hello worldh')
  • extend(iterable_ints): 追加多个字节到末尾。
s_array.extend([104,105])
print(s_array)
#结果
bytearray(b'Hello worldhi')
  • insert(index, int): 在指定索引处插入一个字节。
s_array.insert(3,104)
print(s_array)
#结果
bytearray(b'Helhlo world')
  • remove(int): 移除首次出现的指定字节。
#移除字符H,数字对应72
s_array.remove(72)
print(s_array)
#结果
bytearray(b'ello world')
  • pop([index]): 移除并返回指定索引处的字节(默认为最后一个)。
popvalue = s_array.pop()
print(popvalue)
print(s_array)
#结果
100
bytearray(b'Hello worl')
  • find(sub[, start[, end]]): 返回子字节序列首次出现的索引,如果没有找到则返回-1。
print(s_array.find(b'H'))
print(s_array.find(100))
#结果
0
10
  • index(sub[, start[, end]]): 返回子字节序列首次出现的索引,如果没有找到则引发 ValueError。
#查找字符d的索引位置
print(s_array.index(100))
#结果
10
  • count(sub[, start[, end]]): 返回子字节序列出现的次数。
#查找字母l出现的次数
print(s_array.count(b'l'))
#结果
3
  • replace(old, new[, count]): 替换字节序列中的字节并返回新字节数组,不修改原字节数组。
#修改字符H为字符Q
s_array_new = s_array.replace(b'H',b'Q')
print(s_array_new)
print(s_array)
#结果
bytearray(b'Qello world')
bytearray(b'Hello world')
  • translate(table[, delete]): 使用转换表进行转换,并可以删除指定字节。跟replace函数一样返回新字节数组,不修改原字节数组。

translate功能类似于字符串str中的功能,也是先使用maketrans创建替换的表(只传两个参数,第一个是需要替换的值,第二个是替换后的值),然后作为参数传入translate函数。

#修改字符H为字符Q,并删除字符o
s_array_new=s_array.translate(s_array.maketrans(b'H',b'Q'),b'o')
print(s_array_new)
print(s_array)
#结果
bytearray(b'Qell wrld')
bytearray(b'Hello world')

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习和关注,谢谢大家。

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值