#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 [ ]: