map函数和filter函数 zip函数
1.map函数
接收一个函数f和一个可迭代对象(列表,字典等),并通过把函数f依次作用在li每个元素上,得到一个新的list并返回
# -*-coding:utf8 -*-
import requests
from lxml import etree
# url='https://www.dytt8.net/html/gndy/dyzz/list_23_1.html'
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'
}
# response=requests.get(url,headers=headers)
#在电影天堂的网页中,因为编码方式,requests库猜错了,所以response.text出现乱码
# print(response.text)
# text=response.content.decode('gbk')
BaseDomain='https://www.dytt8.net'
def get_detail_url(url):
response=requests.get(url,headers=headers)
text=response.content.decode('gbk')
html=etree.HTML(text)
detail_urls = html.xpath('//table[@class="tbspan"]//a/@href')
map(lambda url:BaseDomain+url,detail_urls)
print(detail_urls)
get_detail_url('https://www.dytt8.net/html/gndy/dyzz/list_23_1.html')
使用map不会改变原值,而是得到一个新的值。比如一个列表传入,得到的是一个新的list
lis ={'egon1':1,'egon2':2,'egon3':3}
ret=map(lambda x: x+' SB', lis)
for i in ret:
print(i)
2.filter函数
过滤掉不符合条件的元素,传一个函数和一个可迭代对象,用法和map类似。序列的每个元素作为参数传给函数进行判断,返回True或False,
将返回True的元素放回新的列表中,
#过滤表中所有奇数
lis =[1,2,3,4,5,6,7,8,9,10]
def is_odd(n):
return n % 2 ==1
new_list=list(filter(is_odd,lis))
print(new_list)
3.zip函数
遍历每一个列表,在相应的列表中取出相应的值,生成新的列表,里面存放的是一个一个的元组。(遍历的是所有可迭代对象,只是列表比较常用)
#zip #遍历每一个列表,在相应列表中取出相应的值 a=[1,2] b=[3,4] c=list(zip(a,b)) #得到的是一个列表,里面是一个一个的元组,元组里有每个列表遍历出来的值 print(c)
# -*-coding:utf8 -*-
import re
import requests
def parse_page(url):
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36',
}
response=requests.get(url,headers=headers)
text=response.text
# . 不能匹配\n 如果想要它匹配\n等字符,要加上flags=re.DOTALL
titles=re.findall(r'<div\sclass="cont">.*?<b>(.*?)</b>',text,re.DOTALL)
dynasties=re.findall(r'<p class="source">.*?<a.*?>(.*?)</a>',text,re.DOTALL)
authors=re.findall(r'<p class="source">.*?<a.*?>.*?<a.*?>(.*?)</a>',text,re.DOTALL)
content_tags=re.findall(r'<div class="contson".*?>(.*?)</div>',text,re.DOTALL)
contents=[]
for content in content_tags:
x=re.sub(r'<.*?>','',content)
contents.append(x.strip())
poems = []
for value in zip(titles,dynasties,authors,contents):
title,dynasty,author,content=value
poem={
'title':title,
'dynasty':dynasty,
'author':author,
'content':content
}
poems.append(poem)
print(poems)
#zip函数
pass
def main():
url='https://www.gushiwen.org/default_1.aspx'
parse_page(url)
if __name__ == '__main__':
main()
map函数和filter函数 zip函数的更多相关文章
- python中的enumerate、map、filter和zip函数
引入 python内置了很多可以供我们直接调用的函数,这些函数的效率往往都非常高.我们在自己造轮子的同时,也非常有必要了解并且正确使用python给我们提供的大量的内置函数.在前面的博客里面我已经介绍 ...
- python中的map,filter,zip函数
map() Return an iterator that applies function to every item of iterable, yielding the results 例如: a ...
- python中的zip()函数和map()函数
一.zip()函数 1.语法: zip(iterable, ...) 参数说明: iterable,...-- 一个或多个迭代器; 在python2中: zip() 函数用于将可迭代的对象作为参数,将 ...
- Pythonh中的zip()与*zip()函数详解
前言 实验环境: Python 3.6: 示例代码地址:下载示例: 本文中元素是指列表.元组.字典等集合类数据类型中的下一级项目(可能是单个元素或嵌套列表). zip(*iterables)函数详解 ...
- Python中的zip()与*zip()函数详解
前言 实验环境: Python 3.6: 示例代码地址:下载示例: 本文中元素是指列表.元组.字典等集合类数据类型中的下一级项目(可能是单个元素或嵌套列表). zip(*iterables)函数详解 ...
- Python:zip()函数
zip()函数的定义 从参数中的多个迭代器取元素组合成一个新的迭代器: 返回:返回一个zip对象,其内部元素为元组:可以转化为列表或元组: 传入参数:元组.列表.字典等迭代器. zip()函数的用法 ...
- python爬虫同时输出两个列表(zip函数)
简介:在做爬虫时,xpath返回的是列表格式,我们又需要将列表中的元素一一对应并存放至字典中,这是就可以用zip函数. zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组, ...
- python之filter()函数
filter()函数是python内置的一个高阶函数. filter()函数接受一个函数f 和一个list,这个函数f的作用是对每个元素进行判断,返回True或False,filter()根据判断结果 ...
- python 中zip()函数的使用
zip(*iterables)函数的定义: zip()函数的对象Iterables,iterables可以有多个参数(元组,列表等可迭代对象)组成.通过zip()函数返回一组元组数据,每个元组中的第i ...
- python zip函数(11)
一.zip函数描述和使用 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,返回的结果可以直接强转为list列表,这样做的好处是节约了不少的 ...
随机推荐
- 使用DNSPod解析Freenom域名
注册Freenom域名 Freenom官网:http://www.freenom.com Freenom提供的顶级域名包括:tk,ml,ga,cf,gq 申请流程: 注册用户后登陆,然后查询并选择一个 ...
- XCode10 运行app报错
原因很简单:Xcode10起,苹果摒弃了对libstdc++库的支持转而支持libc++库了.为了保证老代码能跑,必须将几个库复制到对应文件夹(见后).同时修改Build Phases中的Link B ...
- 卷积神经网络(Convolutional Neural Network, CNN)简析
目录 1 神经网络 2 卷积神经网络 2.1 局部感知 2.2 参数共享 2.3 多卷积核 2.4 Down-pooling 2.5 多层卷积 3 ImageNet-2010网络结构 4 DeepID ...
- centos7.3安装nvidia驱动和cuda9
一, 挂载本地源镜像 1) 下载操作系统镜像 所有服务器操作系统必须统一,本平台只支持 CentOS 7.3 1611,镜像下载地址. 2) 上传镜像到服务器 ,假设上传在 root 下 3) 建立挂 ...
- BarTender中如何为称重设备设置秤显示?
有关BarTender 2016表单中的称显示,前面都给大家介绍过了,包括秤显示属性设置,链接数据源属性设置等等.本文,将以图文并茂的方式,教大家如何为称重设备设置秤显示控件. 我们打开BarTend ...
- KafkaManager对offset的两种管理方式
OffsetManager主要提供对offset的保存和读取,每个broker都有一个OffsetManager实例,kafka管理topic的偏移量有2种方式: 1.ZookeeperOffsetM ...
- JS设计模式——观察者模式(通俗易懂)
Observer模式的概念 Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态. Observer模式提供给关联对象一种同步通信的手段 ...
- MYSQL中动态行数据转列数据
最近用到城市矩阵相关 需要将城市与城市距离转化为二维表 通过动态SQL直接实现 贴出来一起学习: 表就三个字段,包含在sql内. SET @sql:=''; SELECT @sql:=GROUP_CO ...
- docker 应用-1(安装以及基础命令)
Docker 安装 还是看官方文档吧TAT https://docs.docker.com/engine/getstarted/step_one/ 理解docker镜像和容器 镜像就是docker容器 ...
- greenplum 安装笔记
折腾两天了,终于把greenplum装成功了.记录下遇到的问题. 环境变量一点要配置准确. greenplum安装,按照这里一步步走: http://www.cnblogs.com/liuyungao ...