编号001:deque用法暂时总结

#deque的用法总结


In [1]:


"""
所在地址:from collections import deque
现在知道的情况总结:
    1.deque的用法与list的操作很像
        1.队列增加数据3种方式:append(left), insert, extend(left)。
        2.删除数据2种方式:remove, pop(left)。需要注意返回值,remove删除的是第一个匹配项返回删除后的列表,pop删除后返回删除的元素
        3.统计元素个数1种方式:count(argv)。
        4.查找元素位置1种方式:index(argv)。找不到的时候结果怎样?
        5.排序1种方式:reverse。
    2.特性:用来保留历史数据,用来保留最新的5个数据,其他的更久的数据不保存。
        1.参数设定:deque(maxlen=5), maxlen必须要指定。
        2.没有指定参数时deque的处理方式与list类似,可以无穷大
        
"""
#方法操作如下:
from collections import deque


In [6]:


#增加元素方式:
#1. append
def append_test001():
    append_test = deque()
    append_test.append("appent_test_001")
    print("增加第一个元素")
    print(append_test)
    append_test.append("appent_test_002")
    print("增加第二个元素")
    print(append_test)
    append_test.appendleft("appent_test_left_001")
    print("在开头增加元素")
    print(append_test)
    print("##append_test001:")
    print(append_test)
    
append_test001()    



增加第一个元素
deque(['appent_test_001'])
增加第二个元素
deque(['appent_test_001', 'appent_test_002'])
在开头增加元素
deque(['appent_test_left_001', 'appent_test_001', 'appent_test_002'])
##append_test001:
deque(['appent_test_left_001', 'appent_test_001', 'appent_test_002'])
In [10]:


#2. insert
def insert_test001():
    insert_test = deque()
    insert_test.insert(0,"insert001")      #注意insert需要传递两个参数,其中第一个参数是需要插入的位置
    print(insert_test)
    
insert_test001()



deque(['insert001'])
In [14]:


#3. extend
def extend_test001():
    extend_test = deque()
    extend_test.extend([1,2,3])
    print("在右侧追加:")
    print(extend_test)
    extend_test.extendleft([4,5,6,6])
    print("在左侧追加:")
    print(extend_test)
    
extend_test001()



在右侧追加:
deque([1, 2, 3])
在左侧追加:
deque([6, 6, 5, 4, 1, 2, 3])
In [16]:


#4. remove
def remove_test001():
    remove_test = deque()
    remove_test.extend([1,23,4,45,1,2,2,4])
    print("最原始的remove_test:")
    print(remove_test)
    remove_test.remove(1)
    print("删除其中一个元素1后:")
    print(remove_test)
    print("准备删除一个不存在的元素9:")
    remove_test.remove(9)
    print(remove_test)
remove_test001()



最原始的remove_test:
deque([1, 23, 4, 45, 1, 2, 2, 4])
删除其中一个元素1后:
deque([23, 4, 45, 1, 2, 2, 4])
准备删除一个不存在的元素9:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-16-4e5363eb2dd4> in <module>()
     11     remove_test.remove(9)
     12     print(remove_test)
---> 13 remove_test001()

<ipython-input-16-4e5363eb2dd4> in remove_test001()
      9     print(remove_test)
     10     print("准备删除一个不存在的元素9:")
---> 11     remove_test.remove(9)
     12     print(remove_test)
     13 remove_test001()

ValueError: deque.remove(x): x not in deque

In [22]:


#5. pop
def pop_test001():
    pop_test = deque()
    pop_test.extend([1,2,4,5,65,6,7,7])
    print("删除前:")
    print(pop_test)
    a = pop_test.pop()
    print("查看返回值:")
    print(a)
    print("执行一次pop后:")
    print(pop_test)
    b = pop_test.popleft()
    print("执行一次popleft")
    print("查看返回值")
    print(b)
    print("删除后的结果:")
    print(pop_test)
    #下面的代码是警告自己,pop没有参数指定
    print("删除一个不存在的元素10:")
    pop_test.pop(10)
    print(pop_test)
    
pop_test001()



删除前:
deque([1, 2, 4, 5, 65, 6, 7, 7])
查看返回值:
7
执行一次pop后:
deque([1, 2, 4, 5, 65, 6, 7])
执行一次popleft
查看返回值
1
删除后的结果:
deque([2, 4, 5, 65, 6, 7])
In [26]:


#6. count, index
def count_test001():
    count_test = deque()
    count_test.extend([1,2,3,4,5,6,62,2,1,2])
    print("初始值:")
    print(count_test)
    print("统计1得数目")
    print(count_test.count(1))
    print("统计一个不存在元素:10")
    print(count_test.count(10))
    print("获取62所在位置")
    print(count_test.index(62))
    print("获取一个不存在得元素得位置:10")
    print(count_test.index(10))
    
count_test001()



初始值:
deque([1, 2, 3, 4, 5, 6, 62, 2, 1, 2])
统计1得数目
2
统计一个不存在元素:10
0
获取62所在位置
6
获取一个不存在得元素得位置:10

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-26-d09d49a25f91> in <module>()
     14     print(count_test.index(10))
     15 
---> 16 count_test001()

<ipython-input-26-d09d49a25f91> in count_test001()
     12     print(count_test.index(62))
     13     print("获取一个不存在得元素得位置:10")
---> 14     print(count_test.index(10))
     15 
     16 count_test001()

ValueError: 10 is not in deque

In [30]:


#7. reverse
def reverse_test001():
    reverse_test = deque()
    reverse_test.extend([1,2,3,5,67,1,23,5,23,2,3,4])
    print("最开始的数据:")
    print(reverse_test)
    reverse_list = reverse_test.reverse()
    print("reverse后的返回值:")
    print(reverse_list)
    print("原deque:")
    print(reverse_test)
    
reverse_test001()



最开始的数据:
deque([1, 2, 3, 5, 67, 1, 23, 5, 23, 2, 3, 4])
reverse后的返回值:
None
原deque:
deque([4, 3, 2, 23, 5, 23, 1, 67, 5, 3, 2, 1])
In [32]:


#8. 保留最新5个数据
def leave_last_data():
    leave_data = deque(maxlen=5)
    leave_data.extend([1,2,3,4,5,6,7,7])
    print(leave_data)
    
leave_last_data()



deque([4, 5, 6, 7, 7], maxlen=5)
In [ ]:


​
原文地址:https://www.cnblogs.com/tanghuang/p/8608577.html