Python3基础 __len__,__getitem__ 记录列表中元素访问的次数 定制不可变序列,下标字典

?

  • python : 3.7.0
  • OS : Ubuntu 18.04.1 LTS
  • IDE : PyCharm 2018.2.4
  • conda : 4.5.11
  • type setting : Markdown

?

code

"""
@Author : 行初心
@Date   : 18-9-23
@Blog   : www.cnblogs.com/xingchuxin
@GitHub : github.com/GratefulHeartCoder
"""

# 定义一个不可变的序列,需要定义两个方法
# 1 __len__(self)
# 2 __getitem__(self,key)
class MyList:
    def __init__(self, *args):
        # 列表推导式,很好用
        self.values = [x for x in args]
        # 生成一个下标为key,值全为0的字典。可以记录访问次数
        self.count = {}.fromkeys(range(len(self.values)), 0)

    def __len__(self):
        # 当使用len函数的时候,会调用这个
        print(‘容器的长度是:‘)
        return len(self.values)

    def __getitem__(self, key):
        # 当用索引来访问元素的时候,会使用这个函数
        self.count[key] += 1
        return self.values[key]

def main():
    test = MyList(1, 2, 3, 4, 5, 6, 7)
    print(test.count)

    print(test[1])

    print(test.count)

    print(len(test))

if __name__ == ‘__main__‘:
    main()

?

result

/home/xcx/anaconda3/envs/xingchuxin/bin/python /home/xcx/PycharmProjects/oop/demo.py
{0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0}
2
{0: 0, 1: 1, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0}
容器的长度是:
7

Process finished with exit code 0

?

resource

  • [文档] https://docs.python.org/3/
  • [规范] https://www.python.org/dev/peps/pep-0008/
  • [规范] https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_language_rules/
  • [源码] https://www.python.org/downloads/source/
  • [ PEP ] https://www.python.org/dev/peps/
  • [平台] https://www.cnblogs.com/

?

tips

行初心 会根据所学的知识,对博文进行更新。

该博文地址:https://www.cnblogs.com/xingchuxin/p/9695483.html

?



Python具有开源、跨平台、解释型、交互式等特性,值得学习。

Python的设计哲学:优雅,明确,简单。提倡用一种方法,最好是只有一种方法来做一件事。

代码的书写要遵守规范,这样有助于沟通和理解。

每种语言都有独特的思想,初学者需要转变思维、踏实践行、坚持积累。

原文地址:https://www.cnblogs.com/xingchuxin/p/9695483.html

时间: 2024-11-05 18:53:43

Python3基础 __len__,__getitem__ 记录列表中元素访问的次数 定制不可变序列,下标字典的相关文章

Python统计列表中元素出现的次数

Python列表可以进行简单的统计,比如list的函数count()可以直接统计元素出现的次数. mylist = [2,2,2,2,2,2,3,3,3,3] myset = set(mylist) #删除列表中的重复元素   print myset    set([2, 3]) for item in myset: print mylist.count(item), " of ", item, " in list" 打印结果: 6 of 2 in list  #

Python3基础 set() 删除一个列表中的重复项

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: #创建具有重复元素的列表 list1=list([1,2,3,4,5,5,6,6,6]) #将列表转成集合,重复的元素自动消除 set1=set(list1) #将元素转为列表 list1=list(set1) print(list1) #大合集,你看得懂吗,好看吗? 还是上面

Python3基础 print 查看一个列表中存储的所有内容

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 code 1 aCollection=range(1,10,1) 2 3 for item in aCollection: 4 print(item) 2 show ------------------------------------------博文的精髓,在技术部分,更在镇场一诗.Pyt

Python List reverse()方法-用于反向列表中元素

描述 reverse() 方法用于反向列表中元素. 语法 reverse()方法语法: list.reverse() 参数 NA. 返回值 该方法没有返回值,但是会对列表的元素进行反向排序. 实例 以下实例展示了 reverse()函数的使用方法: #!/usr/bin/python aList = [123, 'xyz', 'zara', 'abc', 'xyz']; aList.reverse(); print "List : ", aList; 以上实例输出结果如下: List

#查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素

1 #!/usr/bin/env python 2 #查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素. 3 #    li = ["alec", " aric", "Alex", "Tony", "rain"] 4 #    tu = ("alec", " aric", "Alex", "Tony&q

(转)Python3:sorted()函数及列表中的sort()函数

Python3:sorted()函数及列表中的sort()函数 转载请注明作者和出处:http://blog.csdn.net/u011475210 操作系统:WINDOWS 10 软件版本:python-3.6.2-amd64 编??者:WordZzzz 一.sort,sorted函数介绍: ??Sort函数是list列表中的函数,而sorted可以对list或者iterator进行排序. ??下面我们使用help来查看他们的用法及功能: sort: >>> help(list.sor

python中循环删除列表中元素时的坑![转]

原博文链接:https://www.cnblogs.com/baihualin/p/10698651.html 循环删除列表中元素时千万别用正序遍历,一定要用反序遍历! 废话不多说,先上案例代码: def test(data): for i in data: data.remove(i) return data data = [1, 2, 3] print(test(data)) 面对以上代码,乍一看以为会打印出空列表,因为test函数内通过for的方法将data中的元素都删除了,其实不然,实际

count列表中字符出现的次数

如何count列表中字符出现的次数?可以将其生成一个字典.key是列表中的字符串,value是出现的次数 例如gen = [2, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7, 8, 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 11, 7, 8, 9, 10, 11, 12]gen_cnt = {b:gen.count(b) for b in set(gen)}print(gen_cnt){2: 1, 3: 2, 4: 3

Python3基础 len方法输出列表中有几个元素

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ ex: code: >>> emptyList=[] >>> emptyList [] >>> emptyList.append('123') >>> emptyList ['123'] >>> emptyLi