首页Python【Python内置函数】b...

【Python内置函数】bytearray()函数

Python 提供了许多内置函数,这些函数是Python语言的一部分,可以直接在Python程序中使用而无需导入任何模块。

本系列将会陆续整理分享一些的Python内置函数。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/11x9_wCZ3yiYOe5nVcRk2CQ?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_built-in_functions





01
简介

bytearray() 函数用于用于创建一个可变的字节数组,它是一个可变序列,包含范围在 0 到 255 之间的整数。与 bytes 类型不同,bytearray 对象是可变的,这意味着可以在创建后修改其内容。

bytearray() 函数的基本语法如下:

bytearray(source=b'')bytearray(source, encoding)bytearray(source, encoding, errors)

参数说明:

    • source:

    • 如果不提供参数,则创建一个大小为 0 的数组;

    • 如果 source 是一个字符串,需要提供 encoding 参数(可选的 errors 参数),bytearray() 将使用 str.encode() 方法将字符串转换为字节;

    • 如果 source 是一个整数,数组将具有该大小,并用空字节(null bytes)初始化;

    • 如果 source 是一个符合缓冲区接口的对象,则使用该对象的只读缓冲区来初始化字节数组;

    • 如果 source 是一个可迭代对象,它必须是一个包含范围在 0 到 255 之间的整数的可迭代对象,这些整数将作为数组的初始内容。

    • encoding:可选参数,指定字符串转换为字节串时使用的编码方式,如

    “utf-8”ascii等。

    • errors:可选参数,指定编码或解码时的错误处理方式,如 “strict”(默认)、“ignore”“replace” 等。

    返回值:

    bytearray() 函数返回一个可变的字节数组。

    02
    方法:

    bytearray 类型继承了大多数可变序列类型的方法,同时也拥有 bytes 类型的大多数方法,这些方法允许对字节数组进行各种操作,包括修改、搜索、排序等。以下是 bytearray 对象提供的常用方法:

    索引和切片:

    • __getitem__(key): 获取字节数组中指定索引或切片的字节。
    • __setitem__(key, value): 设置字节数组中指定索引或切片的字节。
    • __delitem__(key): 删除字节数组中指定索引或切片的字节。
    修改类方法:
    • append(int):追加一个字节到末尾。
    • extend(iterable_of_ints): 追加多个字节到末尾
    • insert(index, int): 在指定索引位置插入一个字节。
    • remove(int): 移除第一个匹配的字节。
    • pop([index]): 移除并返回指定索引位置的字节,如果不提供索引,则移除并返回最后一个字节。
    • replace(old, new[, count]): 将字节数组中的 old 字节序列替换为 new 字节序列,最多替换 count 次。
    • clear(): 清空字节数组。
    搜索类方法:
    • count(x):返回字节 x 在字节数组中出现的次数。
    • index(x[, start[, end]]):返回字节 x 在字节数组中的第一个索引位置。可以指定搜索范围 start 和 end。
    • rindex(x[, start[, end]]): 返回字节 x 在字节数组中的最后一个索引位置。可以指定搜索范围 start 和 end。
    • find(sub[, start[, end]]): 返回子字节序列 sub 在字节数组中第一次出现的索引。如果未找到,返回 -1。
    • rfind(sub[, start[, end]]): 返回子字节序列 sub 在字节数组中最后一次出现的索引。如果未找到,返回 -1。
    其他方法:
    • reverse(): 将字节数组中的字节顺序反转。
    • isalnum(): 检查字节数组中的所有字节是否都是字母数字字符。
    • isalpha(): 检查字节数组中的所有字节是否都是字母字符。
    • isdigit(): 检查字节数组中的所有字节是否都是数字字符。
    • isspace(): 检查字节数组中的所有字节是否都是空白字符
    • istitle(): 检查字节数组中的所有字节是否都是标题字符。
    • startswith(prefix[, start[, end]]): 检查字节数组是否以指定的前缀开始。
    • endswith(suffix[, start[, end]]): 检查字节数组是否以指定的后缀结束。
    • join(iterable): 将可迭代对象中的字节序列连接起来,使用当前字节数组作为分隔符。
    03
    使用

    下面是一些使用 bytearray() 函数的示例:

    • 示例 1:基本用法

    # 不提供参数
    ba1 = bytearray()
    print(ba1)
    # 输出: bytearray(b'')

    # 整数
    ba2 = bytearray(5)
    print(ba2)
    # 输出: bytearray(b'x00x00x00x00x00')

    # 可迭代对象
    ba3 = bytearray([104, 101, 108, 108, 111])
    print(ba3)
    # 输出: bytearray(b'hello')

    # 字符串
    ba4 = bytearray("hello""utf-8")
    print(ba4)
    # 输出: bytearray(b'hello')

    # bytes 对象
    b = b'world'
    ba5 = bytearray(b)
    print(ba5)
    # 输出: bytearray(b'world')


    • 示例 2:常用方法

    由于 bytearray 是可变的,可以直接对字节数组进行各种操作,包括修改、搜索、排序等。

    • 索引和切片
    ba = bytearray(b'hello')
    # 修改索引为 0 的元素
    # 'H' 的 ASCII 码是 72
    ba[0] = 72
    print(ba)
    # 输出: bytearray(b'Hello')

    # 修改索引 1 到 3 之间的元素
    # 'H' 的 ASCII 码是 72
    ba[1:3] = [72, 72]
    print(ba)
    # 输出: bytearray(b'HHHlo')

    # 删除元素
    # 删除索引为 -1 的元素
    del ba[-1]
    print(ba)
    # 输出: bytearray(b'HHHl')
    • 修改类方法
    ba = bytearray(b'hello')
    # 添加一个字节
    # 'o' 的 ASCII 码是 111
    ba.append(111)
    print(ba)
    # 输出: bytearray(b'helloo')

    # 添加多个字节
    # '!' 的 ASCII 码是 33, ',' 的 ASCII 码是 44
    ba.extend([33, 44])
    print(ba)
    # 输出: bytearray(b'helloo!,')

    # 在指定位置 1 插入一个字节
    # 'o' 的 ASCII 码是 111
    ba.insert(1, 111)
    print(ba)
    # 输出: bytearray(b'hoelloo!,')

    # 删除并返回指定位置 1 的字节
    print(ba.pop(1))
    # 输出: 111,'o' 的 ASCII 码

    # 删除第一个ASCII 码为 111 的字节
    ba.remove(111)
    print(ba)
    # 输出: bytearray(b'hello!,')

    # 将字节数组中的l字节序列替换为L字节,替换2次
    print(ba.replace(b'l' , b'L' , 2))
    # 输出: bytearray(b'heLLo!,')
    • 搜索类方法
    ba = bytearray(b'hoelloeo')

    # 字节 o 在字节数组中出现的次数,可以传入ASCII 码
    print(ba.count(111))
    # 输出:3
    print(ba.count(b'o'))
    # 输出:3

    # 字节 o 在字节数组中的第一个索引位置
    print(ba.index(111))
    # 输出:1
    # 指定搜索范围 start 和 end
    print(ba.index(111 ,2 ,6))
    # 输出:5

    # 字节 o 在字节数组中的最后一个索引位置
    print(ba.rindex(111))
    # 输出:7

    # 子字节序列在字节数组中第一次出现的索引
    print(ba.find(b'oe'))
    # 输出:1

    # 子字节序列在字节数组中最后一次出现的索引
    print(ba.rfind(b'oe'))
    # 输出:5
    • 其他方法:
    ba = bytearray(b'hello')

    # 将字节数组中的字节顺序反转
    ba.reverse()
    print(ba)
    # 输出: bytearray(b'olleh')

    # 检查字节数组中的所有字节是否都是数字字符
    print(ba.isdigit())
    # 输出: False

    # 检查字节数组中的所有字节是否都是字母字符
    print(ba.isalpha())
    # 输出: True

    # 检查字节数组是否以指定的前缀开始
    print(ba.startswith(b'o'))
    # 输出: True

    • 示例 3:转换为 bytes

    由于 bytearray 对象是可变的,如果需要一个不可变的字节序列,可以将其转换为 bytes 对象。

    ba = bytearray(b'hello')
    # 转换为 bytes
    b = bytes(ba)
    print(b)
    # 输出: b'hello'


    本篇文章来源于微信公众号: 码农设计师

    RELATED ARTICLES

    欢迎留下您的宝贵建议

    Please enter your comment!
    Please enter your name here

    - Advertisment -

    Most Popular

    Recent Comments