IntSet() DEMO

转载 2015年07月10日 07:44:49
#quote from MIT 'introduction to computation and programming using python, Revised'
class IntSet(object):
    """An IntSet is a set of integers"""
    #Information about the implementation (not the abstraction)
    #The value of the set is represented by a list of ints, self.vals
    #Each int in the set occurs in self.vals exactly once.
    
    def __init__(self):
        """Create an empty set of integers"""
        self.vals = []
        
    def insert(self, e):
        """Assumes e is an integer and inserts e into self"""
        if not e in self.vals:
            self.vals.append(e)
    
    def member(self, e):
        """Assumes e is an integer
           Returns True if e is in self, and False otherwise"""
        return e in self.vals
        
    def remove(self, e):
        """Assumes e is an integer and removes e from self
           Raises ValueError if e is not in self"""
        try:
            self.vals.remove(e)
        except:
            raise ValueError(str(e) + ' not found')
            
    def getMembers(self):
        """Returns a list containing the elements of self.
           Nothing can be assumed about the order of the elements"""
        return self.vals[:]
        
    def __str__(self):
        """Returns a string representation of self"""
        self.vals.sort()
        result = ''
        for e in self.vals:
            result += str(e) + ','
        return '{' + result[:-1] + '}' #-1 omits trailing comma


%run "C:\Users\Administrator\test.py"


s = IntSet()


s.insert(100)


s.insert(200)


s.member(100)
Out[27]: True


s.member(10000)
Out[28]: False


print s
{100,200}


s.insert(9999)


s.remove(200)


print s
{100,9999}


s.getMembers()
Out[33]: [100, 9999]


sum = 0


for e in s.getMembers():
    sum += e
print sum


10099


相关文章推荐

Redis源码剖析和注释(五)--- 整数集合(intset)

Redis 整数集合(intset)1. 介绍整数集合(intset)是集合键底层实现之一。集合键另一实现是值为空的散列表(hash table),虽然使用散列表对集合的加入删除元素,判断元素是否存在...
  • men_wen
  • men_wen
  • 2017年04月12日 17:58
  • 447

NoSql之Redis整数集合(intset)源码探究

1 为什么需要intset动态字符串,双端链表,字典,跳跃表等,这些数据结构都非常强大实用,但是在内存消耗方面也非常“巨大”。 Redis的数据都是存放在内存上面的,所以对内存的使用要求及其苛刻,R...

redis之intset

类型介绍 intset是一个整型的数据集合,这里面的结构比较简单,实际上就是一个整型数组,在添加过程中,同样给该数组按照数据大小排序,这点在查找的时候比较容易,比较符合缓存的特点,另外,这里面同样给...

Intset实现:真正理解并掌握链表

这道习题让我纠结了一整天。在写Intset的添加元素的push成员函数时,我一下走进了思维误区。直到晚上无意间看到了C++Primer 16章的Queue类之后才犹如醍醐灌顶。问题在于我把empty(...

redis内部数据结构总结(7)intset

Redis里面使用intset是为了实现集合(set)这种对外的数据结构。set结构类似于数学上的集合的概念,它包含的元素无序,且不能重复。Redis里的set结构还实现了基础的集合并、交、差的操作。...
  • kkgbn
  • kkgbn
  • 2017年02月11日 20:55
  • 219

Redis源码剖析--整数集合Intset

本系列博客文章已经分析了Redis的大部分数据结构,包括动态字符串,双端链表,字典,跳跃表等,这些数据结构都非常强大实用,但是在内存消耗方面也非常“巨大”。Redis的数据都是存放在内存上面的,所以对...

Redis内部数据结构详解之整数集合(intset)

本文所引用的源码全部来自Redis2.8.2版本。 Redis中intset数据结构与API相关文件是intset.c, intset.h。 整数集合简介 整数集合intset用于有序...

Redis源码分析-内存数据结构intset

这次研究了一下intset,研究的过程中,一度看不下过去,但是还是咬牙tingg
  • zpxly
  • zpxly
  • 2014年10月21日 20:55
  • 1039

底层实现-intset 整数集合

用途与依赖     整数集合(intset)是set对象的的底层实现之一。     整数集合的底层依赖于数组,这个数组以有序、无重复的方式保存集合元素。     如果对象是集合,并且集合中只包含整数,...

分布式key/value cache redis(version:2.4.2) 源码学习(一)--------intset学习

前记:        最近看了一些redis(详情请查看http://redis.io/)相关的东西,网上很多人对这个评价很不错,也有一些网站开始使用这个了。想着自己可以学习一下redis的源码,进...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IntSet() DEMO
举报原因:
原因补充:

(最多只允许输入30个字)