python爬虫(二)--了解deque
队列-deque
有了上面一节的基础。当然你须要全然掌握上一节的全部方法,由于上一节的方法。在以下的教程中
会重复的用到。
假设你没有记住,请你返回上一节。
http://blog.csdn.net/passer_zzy/article/details/47156109
这一节我们要了解一种队列--deque。
在以下的爬虫基础中,我们也要重复的使用deque,来完毕网址
的出队入队。
有了对deque主要的认识,我们開始进一步的学习了解他。
colloections.deque([iterable[,maxlen]])
从左到右初始化一个新的deque对象,假设iterable没有给出,那么产生一个空的deque.
deque是栈(stacks)和队列(queues)的泛指。deque支持线程安全。从两边进行存入或者取出是高效率的
虽然list对象支持同样的操作,可是list用来完毕队列功能事实上是低效率的,由于list在队首使用
pop()和insert()都是效率比較低的。
假设maxlen未定义。那么deque但是是随意长度,否则deque仅仅能是指定长度的
deque对象有哪些方法?
1.1:append(x)
向deque的最右边加入元素x
实例:
from collections import deque
a=deque()
for i in range(10):
a.append(i)
print(a)
输出的结果是:
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
1.2:appendleft(x)
向deque的最左边加入元素x
实例:
from collections import deque
a=deque()
for i in range(10):
a.appendleft(i)
print(a)
输出的结果是:
deque([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
1.3:clear()
删除deque的全部元素
from collections import deque
a=deque()
for i in range(10):
a.appendleft(i)
print(a)
a.clear()
print(a)
输出的结果是:
deque([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
deque([])
1.4:count()
统计deque元素个数
from collections import deque
a = deque()
for x in range(10):
a.append(x)
a.appendleft(1)
print(a.count(1))
输出的结果是:2
1.5:extend(iterable)/extendleft(iterable)
把iterbale中的元素都加入到deque中,默认从右边開始加入,
from collections import deque
a=deque()
l=[1,2,3,4]
for x in range(10):
a.append(x)
a.extend(l)
print(a)
输出的结果是:
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4])
[Finished in 0.2s]
1.6:pop()/popleft()
删除末尾的元素,pop()方法并不能像list对象那样能够使用pop(2)
实例:
from collections import deque
a=deque()
l=[1,2,3,4]
for x in range(10):
a.append(x)
a.extend(l)
print(a)
a.pop()
print(a)
输出的结果是:
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4])
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3])
1.7:remove(value)
删除第一个出现的value,假设没有value报错
实例:
from collections import deque
a=deque()
l=[1,2,3,4]
for x in range(10):
a.append(x)
a.extend(l)
print(a)
a.remove(3)
print(a)
a.remove(11)
print(a)
输出的结果是:
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4])
Traceback (most recent call last):
deque([0, 1, 2, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4])
File "D:\Python\xode\try.py", line 10, in <module>
a.remove(11)
ValueError: deque.remove(x): x not in deque
1.8:reverse()
全部元素反转,并返回None
实例:
from collections import deque
a=deque()
for x in range(10):
a.append(x)
print(a)
print(a.reverse())
print(a)
输出的结果是:
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
None
deque([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
1.9:rotate(n)
将左右元素向右移动n步。假设n是负数那么向左移动,n=1相当于:
a.appendleft(d.pop())
from collections import deque
a=deque()
for x in range(10):
a.append(x)
print(a)
a.rotate()
print(a)
输出的结果是:
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
deque([9, 0, 1, 2, 3, 4, 5, 6, 7, 8])
最后再看一些官方文档给出的样例:
>>> from collections import deque
>>> d = deque('ghi') # make a new deque with three items
>>> for elem in d: # iterate over the deque's elements
... print(elem.upper())
G
H
I
>>> d.append('j') # add a new entry to the right side
>>> d.appendleft('f') # add a new entry to the left side
>>> d # show the representation of the deque
deque(['f', 'g', 'h', 'i', 'j'])
>>> d.pop() # return and remove the rightmost item
'j'
>>> d.popleft() # return and remove the leftmost item
'f'
>>> list(d) # list the contents of the deque
['g', 'h', 'i']
>>> d[0] # peek at leftmost item
'g'
>>> d[-1] # peek at rightmost item
'i'
>>> list(reversed(d)) # list the contents of a deque in reverse
['i', 'h', 'g']
>>> 'h' in d # search the deque
True
>>> d.extend('jkl') # add multiple elements at once
>>> d
deque(['g', 'h', 'i', 'j', 'k', 'l'])
>>> d.rotate(1) # right rotation
>>> d
deque(['l', 'g', 'h', 'i', 'j', 'k'])
>>> d.rotate(-1) # left rotation
>>> d
deque(['g', 'h', 'i', 'j', 'k', 'l'])
>>> deque(reversed(d)) # make a new deque in reverse order
deque(['l', 'k', 'j', 'i', 'h', 'g'])
>>> d.clear() # empty the deque
>>> d.pop() # cannot pop from an empty deque
Traceback (most recent call last):
File "<pyshell#6>", line 1, in -toplevel-
d.pop()
IndexError: pop from an empty deque
>>> d.extendleft('abc') # extendleft() reverses the input order
>>> d
deque(['c', 'b', 'a'])
钟志远 江苏南京 904727147
python爬虫(二)--了解deque的更多相关文章
- Python爬虫二
常见的反爬手段和解决思路 1)明确反反爬的主要思路 反反爬的主要思路就是尽可能的去模拟浏览器,浏览器在如何操作,代码中就如何去实现;浏览器先请求了地址url1,保留了cookie在本地,之后请求地址u ...
- Python 爬虫二 requests模块
requests模块 Requests模块 get方法请求 整体演示一下: import requests response = requests.get("https://www.baid ...
- Python爬虫(二十一)_Selenium与PhantomJS
本章将介绍使用Selenium和PhantomJS两种工具用来加载动态数据,更多内容请参考:Python学习指南 Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试 ...
- python爬虫(二)_HTTP的请求和响应
HTTP和HTTPS HTTP(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收HTML页面的方法 HTTPS(HyperText Transfer Prot ...
- Python爬虫(二十四)_selenium案例:执行javascript脚本
本章叫介绍如何使用selenium在浏览器中使用js脚本,更多内容请参考:Python学习指南 隐藏百度图片 #-*- coding:utf-8 -*- #本篇将模拟执行javascript语句 fr ...
- Python爬虫(二十三)_selenium案例:动态模拟页面点击
本篇主要介绍使用selenium模拟点击下一页,更多内容请参考:Python学习指南 #-*- coding:utf-8 -*- import unittest from selenium impor ...
- Python爬虫(二十二)_selenium案例:模拟登陆豆瓣
本篇博客主要用于介绍如何使用selenium+phantomJS模拟登陆豆瓣,没有考虑验证码的问题,更多内容,请参考:Python学习指南 #-*- coding:utf-8 -*- from sel ...
- Python爬虫(二十)_动态爬取影评信息
本案例介绍从JavaScript中采集加载的数据.更多内容请参考:Python学习指南 #-*- coding:utf-8 -*- import requests import re import t ...
- Python 爬虫(二十五) Cookie的处理--cookielib库的使用
Python中cookielib库(python3中为http.cookiejar)为存储和管理cookie提供客户端支持. 该模块主要功能是提供可存储cookie的对象.使用此模块捕获cookie并 ...
随机推荐
- 1.1 Qt入门
学习Qt的前提是学好C++. 我刚入门Qt,打算趁着暑假2个月时间来学习<C++ GUI Qt 4>这本书. 现在有Qt4和Qt5,似乎很多公司都还是在使用Qt4,所以我也就选择了学习Qt ...
- Microsoft Windows Server 系统基本配置
Microsoft Windows Server 系统基本配置 环境基本配置 桌面和显示属性 更新服务器名称 更新用户密码 创建密码重置盘 设置网络类型 TCP/IP设置 ping和ipconfig命 ...
- TUM好用的工具
https://vision.in.tum.de/data/datasets/rgbd-dataset/tools?tdsourcetag=s_pctim_aiomsg
- github 新建一个仓库后
每次都记不住命令,记一下,防止找不到 echo "# learn18" >> README.md git init git add README.md git comm ...
- Linux硬盘的检测--smartctl详细介绍
概述 随着硬盘容量.速度的快速发展,硬盘的可靠性问题越来越重要,今天的单块硬盘存储容量可轻松达到1TB,硬盘损坏带来的影响非常巨大.不同的文件系统(xfs,reiserfs,ext3)都有自己的检测 ...
- python3.x Day6 协程
协程:#定义来自牛人alex博客协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程.协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈 ...
- 剑指Offer(书):矩阵中的路径
题目: * 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.* 路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.* 如果一条路径经 ...
- UVALive 2957 Bring Them There
Bring Them There Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVALive. O ...
- 【Kubernetes】kube-dns 持续重启
kuberbetes部署和启动正常,但是kube-dns持续重启 使用命令 kubectl get pods --all-namespaces 得到结果 从图中可以看出kube-dns-c7d8589 ...
- Linux CentOS命令行界面字体重复问题解决记录
问题描述: 安装完CentOS 6.5 mini版之后,安装图形界面,启动之后出现如下问题,字体有重复 应该是因为字体原因, 我的解决方法: yum -y install dejavu-sans-* ...