广告
返回顶部
首页 > 资讯 > 后端开发 > Python >[Python]数据结构--Bitmap
  • 919
分享到

[Python]数据结构--Bitmap

数据结构PythonBitmap 2023-01-31 07:01:35 919人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

‘Festinatione facit vastum’ Bitmap简介 Bitmap的实现和使用 Bitmap简介 bitmap是很常用的数据结构,比如用于Bloom Filter中、用于无重复整数的排序等等。bit

‘Festinatione facit vastum’

  • Bitmap简介
  • Bitmap的实现和使用

Bitmap简介

bitmap是很常用的数据结构,比如用于Bloom Filter中、用于无重复整数的排序等等。bitmap通常基于数组来实现,数组中每个元素可以看成是一系列二进制数,所有元素组成更大的二进制集合。对于python来说,整数类型默认是有符号类型,所以一个整数的可用位数为31位。

Bitmap的实现和使用

bitmap实现思路

bitmap是用于对每一位进行操作。举例来说,一个Python数组包含4个32位有符号整型,则总共可用位为4 * 31 = 124位。如果要在第90个二进制位上操作,则要先获取到操作数组的第几个元素,再获取相应的位索引,然后执行操作。

代码:

# encoding: utf-8
"""
@author: JYFelt
@contact: JYFelt@163.com
@site: www.JYFelt.com

@version: 1.0
@license: Apache Licence
@file: bitmap_demo.py
@time: 2018/1/13 13:46

这一行开始写关于本文件的说明与解释
"""


# 初始化bitmap
class Bitmap():
    def __init__(self, max):
        """确定数组个数"""
        self.size = int((max + 31 - 1) / 31)
        # max需要传入的为要排序的最大数
        self.array = [0 for i in range(self.size)]

    def bitindex(self, num):
        """确定数组中元素的位索引"""
        return num % 31

    def set_1(self, num):
        """将元素所在的位——置1"""
        elemindex = (num // 31)  # 整除,否则为浮点值
        byteindex = self.bitindex(num)
        ele = self.array[elemindex]
        self.array[elemindex] = ele | (1 << byteindex)

    def test_1(self, i):
        elemindex = (i // 31)  # 整除,否则为浮点值
        byteindex = self.bitindex(i)
        if self.array[elemindex] & (1 << byteindex):
            return True
        return False


if __name__ == '__main__':
    Max = ord('z')  # ord('*')返回单字符在ASCII中对应的整数
    shuffle_array = [x for x in 'qwelajkda']
    ret = []
    bitmap = Bitmap(Max)
    for c in shuffle_array:
        bitmap.set_1(ord(c))
    for i in range(Max + 1):
        if bitmap.test_1(i):
            ret.append(chr(i))
    print(u'原始数组是:%s' % shuffle_array)
    print(u'排序以后的数组是:%s' % ret)

--结束END--

本文标题: [Python]数据结构--Bitmap

本文链接: https://www.lsjlt.com/news/191907.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • [Python]数据结构--Bitmap
    ‘Festinatione facit vastum’ Bitmap简介 Bitmap的实现和使用 Bitmap简介 bitmap是很常用的数据结构,比如用于Bloom Filter中、用于无重复整数的排序等等。bit...
    99+
    2023-01-31
    数据结构 Python Bitmap
  • Python: 实现bitmap数据结构
    http://my.oschina.net/goal/blog/200347  bitmap是很常用的数据结构,比如用于Bloom Filter中、用于无重复整数的排序等等。bitmap通常基于数组来实现,数组中每个元...
    99+
    2023-01-31
    数据结构 Python bitmap
  • C++如何实现BitMap数据结构
    目录一、BitMap位图二、C++实现分治,分布式。BitMap(位图)及其升级版bloom filter是处理海量数据常用的方法,这里先介绍BitMap概念及其c++实现。 一、B...
    99+
    2022-11-13
  • redis bitmap数据结构之java对等操作详解
    目录1. Redis基本的bitmap操作命令2. Java中的原生bitmap3. java和redis的bitmap互操作  在之前的文章中,我们有说过bitmap,bitmap在很多场景可以应用,比如黑白名单,快速...
    99+
    2022-10-16
  • redis bitmap数据结构之java对等操作详解
    目录1. redis基本的bitmap操作命令2. java中的原生bitmap3. java和redis的bitmap互操作  在之前的文章中,我们有说过bitmap,bitmap...
    99+
    2022-11-13
    redis bitmap数据结构 java对等操作 redis bitmap
  • python数据结构
    一:数据结构  数据结构可以认为他们是用来处理一些数据的或者说是存储数据。  对于数据结构的介绍会关系到类和对象的定义,此处对这两个定义加以描述。  何为类:说道类首先我们能够想到类型,在数据结构中类型有哪些常用的类型有int整型,floa...
    99+
    2023-01-31
    数据结构 python
  • python 数据结构
    list(列表)创建list方式1  : 直接创建  theList = [1,2,3,4,5,6,7,8,9]                    ==> [1,2,3,4,5,6,7,8,9]方式2 : 使用内建方法list()...
    99+
    2023-01-31
    数据结构 python
  • go数据结构和算法BitMap原理及实现示例
    目录1. BitMap介绍如何判断数字在bit数组的位置设置数据到bit数组从bit数组中清除数据数字是否在bit数组中2. Go语言位运算左移右移使用&^和位移运算来给某一...
    99+
    2022-11-13
  • python 数据结构篇
    在众多编程语言里,数据结构与算法都可以说是至关重要的基础。但是对于python而言,因为其本身就是用C实现的,其速度和效率本身较低,因而pyhon没有像其他语言那样那么重视数据结构与算法(python最引以为傲的应该是其功能强大而丰富的各种...
    99+
    2023-09-13
    python 开发语言 数据结构
  • Python数据结构__树
    树是一种非常重要的数据结构,它是非线性结构,它不是Python内置的数据结构;树:  1.非线性结构,每个元素可以有多个前驱和后继;  2.树是n(n>=0)个元素的集合    n=0时,称为空树;    树只有一个特殊的没有前驱的元...
    99+
    2023-01-31
    数据结构 Python
  • 数据结构[Python--Stack]
    难得有些许空闲,看一下Python的数据结构--Stack,现将几个典型示例进行总结!一、什么是栈     栈是一个有序集合,根据其特性可以称为"先进后出"或"后进先出", 其中添加或删除都发生在同一端,这一端被称为"栈顶",与其对应的叫"...
    99+
    2023-01-31
    数据结构 Python Stack
  • python数据结构:数据类型
    目录1.数据是什么?2.数据类型2.1内建原子数据类型2.2 内建集合数据类型3.集合数据类型的方法3.1 列表3.2 字符串3.3 元祖3.4 集合3.5 字典1.数据是什么? 在...
    99+
    2022-11-12
  • Python数据结构:集合
    集合的定义  使用大括号,并且里面必须有初始值,否则是dict字典类型 集合的特征 集合内部的元素无序,所以不能使用索引、切片等操作 集合内部的元素具有唯一性,不允许元素重复出现 集合内部的元素,只能存放int, float, s...
    99+
    2023-01-30
    数据结构 Python
  • (python)数据结构---集合
    一、描述 set翻译为集合 set是可变的、无序的、不可重复的 set的元素要求可哈西(不可变的数据类型可哈西,可变的数据类型不可哈希) set是无序的,因此不可以索引,也不可以修改 线型结构的查询时间复杂度是O(n),随着数据的增大...
    99+
    2023-01-30
    数据结构 python
  • Python 数据结构 tree 树
    树节点类 TreeNode 作为最简单的树节点,我们只需要3个基本属性 name: 当前节点的名字(使用str来保存) parent: 父节点对象(对根节点来说,该值为Null) child: 字节点对象们(使用dict来保存...
    99+
    2023-01-31
    数据结构 Python tree
  • Python数据结构列表
    目录1 序列2 列表2.1 列表函数2.2 列表排序2.3 解析列表正则小练习:匹配出以下字符串所有url, import re def find_url(sentence, ...
    99+
    2022-11-12
  • python数据结构之quick_sor
    Quick sort , also known as partition-exchange sort, divides the data to be sorted into two separate parts by a single s...
    99+
    2023-01-30
    数据结构 python quick_sor
  • python内置数据结构
    1、列表--是一个序列,用于顺序的存储数据列表的定义与初始化In [374]: lst = list() In [375]: lst Out[375]: [] In [376]: lst = [] In [377]: lst = [1...
    99+
    2023-01-31
    数据结构 python
  • python数据结构之 set
     在数学概念中,被意为整合元素的定义区域在python中,set最大的作用是用来去重 set常见操作:In [158]: s ={1,1,1,1,2,22,33,3,3,3} In [159]: sOut[159]: {1,2, 3, 22...
    99+
    2023-01-31
    数据结构 python set
  • Python数据结构详细
    目录1. 关于列表更多的内容1.1. 把列表当作堆栈使用1.2. 把列表当作队列使用1.3. 列表推导式1.4. 嵌套的列表推导式2. del 语句3. 元组和序列4. 集合6. 循...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作