collection系列用法

deque双向队列

Deque可以从两端添加和删除元素。常用的结构,是它的简化版本。

Deque支持序列的常用操作,现在举一个简单例子,你会发现其实跟平成的list没啥区别:

1 import collections
2
3 dic=collections.deque(‘abcdefg‘)
4 print ‘deque=‘,dic
5 print ‘Length:‘,len(dic)
6 print ‘Left end:‘,dic[0]
7 print ‘Right end:‘,dic[-1]
8 dic.remove(‘c‘)
9 print ‘remove(c):‘,dic

截图直接贴图了:

是不是发现和list一本一样,只是变成了deque(list),关键是一些基本的用法都一样,来个对比图吧这样更直接些:

1 listTest=[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘]
2 print ‘listTest=‘,listTest
3 print ‘Length:‘,len(listTest)
4 print ‘Left end:‘,listTest[0]
5 print ‘Right end:‘,listTest[-1]
6 listTest.remove(‘c‘)
7 print ‘remove(c):‘,listTest

还是直接贴图:

下面的独特之处就来了,双向操作。deque是通过extend方法初始化集合元素的,同时你可以通过extendleft将结合元素从“左边”加入到集合中:

 1 import collections
 2 d1=collections.deque()
 3 d1.extend(‘abcdefg‘)  #可以列表元素
 4 print ‘extend:‘,d1
 5 d1.append(‘h‘)  #只会认为是一个元素加入
 6 print ‘append:‘,d1
 7 # add to left
 8 d2=collections.deque()
 9 d2.extendleft(xrange(6)) #从左边加入元素
10 print ‘extendleft:‘,d2
11 d2.appendleft(6)  #从左边加入元素
12 print ‘appendleft:‘,d2

d1.append(‘h‘) #只会认为是一个元素加入

d1.extend(‘abcdefg‘)  #可以列表元素

执行结果图:

与append和appendleft方法对应的还有pop和popleft方法分别用于从集合中取出元素,看下面的例子:

 1 print "From the right"
 2 d1=collections.deque(‘abcdefg‘)
 3 print ‘d1==‘,d1
 4 while True:
 5     try:
 6         print d1.pop(),
 7     except IndexError:
 8         break
 9 print
10 print ‘\n From the left‘
11 d2=collections.deque(xrange(6))
12 print ‘d2==‘,d2
13 while True:
14     try:
15         print d2.popleft(),
16     except IndexError:
17         break
18 print                 

执行结果:

最后值得一提的是,deque是线程安全的,也就是说你可以同时从deque集合的左边和右边进行操作而不会有影响,看下面的代码:

import collections
import threading
import time
candle=collections.deque(xrange(5))
def burn(direction,nextSource):
    while True:
        try:
            next=nextSource()
        except IndexError:
            break
        else:
            print ‘%s : %s‘ % (direction,next)
            time.sleep(0.1)
    print "done %s" % direction
    return
left=threading.Thread(target=burn,args=(‘left‘,candle.popleft))
right=threading.Thread(target=burn,args=(‘right‘,candle.pop))  

left.start()
right.start()  

left.join()
right.join()                                  
时间: 2025-01-14 01:00:33

collection系列用法的相关文章

python学习笔记4:基础(集合,collection系列,深浅拷贝)

转载至:http://www.cnblogs.com/liu-yao/p/5146505.html 一.集合 1.集合(set): 把不同的元素组成一起形成集合,是python基本的数据类型.集合元素(set elements):组成集合的成员 python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)

3.python基础补充(集合,collection系列,深浅拷贝)

一.集合 1.集合(set): 把不同的元素组成一起形成集合,是python基本的数据类型.集合元素(set elements):组成集合的成员 python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算. sets 支持 x in set, len(set),和 for x in set.作

Python 从零学起(纯基础) 笔记 之 collection系列

Collection系列  1.  计数器(Counter) Counter是对字典类型的补充,用于追踪值的出现次数   ps  具备字典所有功能 + 自己的功能 Counter 1 import collections 2 obj = collections.Counter('haskhflajgahg') 3 print(obj) 4 ret = obj.most_common(4)#取前四位(很少用到) 5 print(ret) 结果: Counter({'a': 3, 'h': 3, '

python的collection系列-双向队列和单向队列

单向队列:数据先进先出 双向队列:可进可出 双向队列部分源码: 1 class deque(object): 2 """ 3 deque([iterable[, maxlen]]) --> deque object 4 5 Build an ordered collection with optimized access from its endpoints. 6 """ 7 def append(self, *args, **kwargs

collection的用法

import java.util.*; public class CollectionTest { public static void main(String[] args ){ //1.创建集合 Collection c = new ArrayList(); //2.向集合中添加元素 c.add(1);//jdk1.5之后的自动装箱, c.add(new Integer(10)); Object o = new Object(); c.add(o);//collection 只能存储单个元素

(转)网页头部<meta name="Robots" 用法 <meta>系列用法.

有时候会有一些站点内容,不希望被ROBOTS抓取而公开.为了解决这个问题,ROBOTS开发界提供了两个办法:一个是robots.txt,另一个是The Robots META标签.1,<meta name="Robots" contect="all|none|index|noindex|follow|nofollow">  默认是all其中的属性说明如下: 设定为all:文件将被检索,且页面上的链接可以被查询: 设定为none:文件将不被检索,且页面上的

网页头部&lt;meta name="Robots" 用法 &lt;meta&gt;系列用法

有时候会有一些站点内容,不希望被ROBOTS抓取而公开.为了解决这个问题,ROBOTS开发界提供了两个办法:一个是robots.txt,另一个是The Robots META标签.1,<meta name="Robots" contect="all|none|index|noindex|follow|nofollow">  默认是all其中的属性说明如下: 设定为all:文件将被检索,且页面上的链接可以被查询: 设定为none:文件将不被检索,且页面上的

Python -- collection 系列

collection 数据容器 Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections 模块在这些内置数据类型的基础上,提供了几个额外的数据类型: namedtuple().创建有名字域的元组子类的工厂函数.python 2.6新增. deque:双端队列,类似于列表,两端进栈和出栈都比较快速.python 2.4新增. Counter:字典的子类,用于统计哈希对象.python 2.7新增. OrderedDict:字典的子类

【摘抄】meta系列用法总结【持续更新中】

meta标签分两大部分:HTTP标题信息(HTTP-EQUIV)和页面描述信息(NAME). ★页面描述信息NAME变量  name是描述网页的,对应于Content(网页内容),以便于搜索引擎机器人查找.分类(目前几乎所有的搜索引擎都使用网上机器人自动查找meta值来给网页分类).  name的value值(name="")指定所提供信息的类型.有些值是已经定义好的.例如description(说明).keyword(关键字).refresh(刷新)等.还可以指定其他任意值,如:cr