collections模块总结

<h4>Counter</h4> <p><code>Counter</code>是<code>dict</code>的子类,用于计算一个可迭代对象各元素的个数。其对象的键是出现过的对象,值是其出现的个数。</p> <h5>初始化</h5> <p>使用一个可迭代对象进行初始化:</p> <pre><code>cnt = Counter()#1 cnt = Counter(u&quot;kjhasdfkjbdvkjlbaskjfdasfkjghakcsjvbsdajfhaksjdf&quot;)#2 cnt = Counter({'a': 4, 'b': 2})#3 cnt = Counter(a=4, b=2)#4</code></pre>

<p>其中第三个和第四个相同。</p>

<h5>对象方法</h5>

<h6>用类似遍历dict的方式遍历</h6>

<pre><code>#1 for k in cnt: print k, cnt[k] #2 for i in cnt.items(): print i</code></pre>

<h6>用Counter独有方式遍历</h6>

<p>升序排列列出的所有元素。</p>

<pre><code>#1 for e in cnt.elements(): print e</code></pre>

<h6>筛选出现次数最多的n个元素</h6>

<p>其中次数为0或负数的元素会被忽略,没有给出数目则输出所有元素。</p>

<pre><code>print cnt.most_common(3) print cnt.most_common()</code></pre>

<h6>更新对象</h6>

<p>对应项加上给出的可迭代对象中的元素个数。</p>

<pre><code>cnt.update(&quot;jjjlvcdl&quot;) print cnt</code></pre>

<p>对应项减去给出的可迭代对象中的元素个数。</p>

<pre><code>cnt.subtract(&quot;jjjlvcdl&quot;) print cnt</code></pre>

<h4>deque</h4>

<p><code>deque</code>是双端队列,不仅可以从队头和队尾进出(且优化了两端的访问),还基本能表现得像一个<code>list</code>(除pop方法有参数差异外)。</p>

<h5>初始化</h5>

<p>使用可迭代对象初始化<code>deque</code>:</p>

<pre><code>dq = deque((1,2,3))</code></pre>

<p>其中<code>deque</code>有个可选的参数<code>maxlen</code>,如果没有指定,则可以创建一个空间可扩展(自动)的双端队列;如果指定了<code>maxlen</code>,则创建一个有限空间的双端队列,当队满时进行元素压入,则会把另一侧最外的元素挤出。</p>

<h5>对象方法</h5>

<h6>append与appendleft</h6>

<p><code>append</code>与普通<code>list</code>的<code>append</code>一样,将元素追加到对象的最右端,而<code>appendleft</code>则相反,将元素追加到对象的最左端。</p>

<pre><code>dq.append(4) dq.appendleft(4)</code></pre>

<h6>pop与popleft</h6>

<p><code>pop</code>从右侧弹出元素,而<code>popleft</code>从左侧弹出元素。

<br />与<code>list</code>的<code>pop</code>不同,<code>deque</code>的<code>pop</code>不能接受参数,仅能从最右边弹出元素。</p>

<pre><code>dq.pop() dq.popleft()</code></pre>

<h6>extend与extendleft</h6>

<p>与<code>list</code>一样,<code>extend</code>将一个可迭代对象中的元素从右侧加入到对象中,而<code>extendleft</code>则从左侧加入,注意压入元素的顺序从参数的可迭代对象第一个元素开始。</p>

<pre><code>dq.extend(xrange(4,10)) dq.extendleft(xrange(4,10))</code></pre>

<h6>遍历</h6>

<p><code>deque</code>可以使用下标访问:</p>

<pre><code>for i in xrange(4,10): print dq[3] del dq[3]</code></pre>

<h6>rotate</h6>

<p>演示使用rotate实现一个跑马灯。</p>

<pre><code>horse = deque(u&quot;====马====&quot;) for i in xrange(100): print u&quot;&quot;.join(horse) horse.rotate(1)</code></pre>

<h4>namedtuple</h4>

<p>使用指定类名和属性快速创建tuple的一个子类</p>

<h5>初始化</h5>

<p>快速实现一个点类型,此时<code>point</code>是类<code>Point</code>的一个引用:</p>

<pre><code>point = namedtuple(&quot;Point&quot;, (&quot;x&quot;, &quot;y&quot;))</code></pre>

<p><code>point</code>可以使用参数列表和参数赋值的方式初始化:</p>

<pre><code>p = point(5, y=11)</code></pre>

<h5>使用对象的属性</h5>

<h6>像tuple一样使用下标</h6>

<pre><code>print p[0],p[1]</code></pre>

<h6>像对象一样使用</h6>

<pre><code>print p.x,p.y</code></pre>

<h6>对象属性是只读的</h6>

<p>对象是mutable的,不能修改:</p>

<pre><code>try: p.x = 30 except AttributeError: print p.x</code></pre>

<h5>作为原型使用</h5>

<p>通过当前对象作为原型新建对象</p>

<h6>使用字典作为中间转换</h6>

<pre><code>d = p._asdict() d[&quot;x&quot;] = 30 a = point(**d) print a</code></pre>

<h6>使用_replace方法</h6>

<pre><code>b = p._replace(x=30) print b</code></pre>

<h5>OrderedDict</h5>

<p><code>OrderedDict</code>是<code>dict</code>的一个子类,不同之处在于<code>OrderedDict</code>的键的顺序是按插入顺序固定的,而<code>dict</code>则是乱序的。</p>

<pre><code>od = OrderedDict(((2,3),(4,5),(0,1))) d = dict(((2,3),(4,5),(0,1))) print od.keys() print d.keys()</code></pre>

<hr />

<blockquote> <p>@<a href="http://mrlyc.blogspot.com/">LYC</a>

<br />转载请注明出处。</p></blockquote>

转载于:https://my.oschina.net/IMLYC/blog/225317

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值