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列表,这样做的好处是节约了不少的 ...
随机推荐
- 你见过的最全面的python重点
首先和大家说个对不起,由于总结了太多的东西,所以篇幅有点长,这也是我"缝缝补补"总结了好久的东西,对于Nginx的东西我没总结在这里,大家可以Python聚焦看,点击直达专栏哦. ...
- django聚合查询
聚合¶ Django 数据库抽象API 描述了使用Django 查询来增删查改单个对象的方法.然而,有时候你需要获取的值需要根据一组对象聚合后才能得到.这份指南描述通过Django 查询来生成和返回聚 ...
- Deep Reinforcement Learning
Reinforcement-Learning-Introduction-Adaptive-Computation http://incompleteideas.net/book/bookdraft20 ...
- 快速入门 WePY 小程序【转】
一.WePY介绍 WePY 是 腾讯 参考了Vue 等框架对原生小程序进行再次封装的框架,更贴近于 MVVM 架构模式, 并支持ES6/7的一些新特性. 二.WePY 使用 1.WePY的安装或更新都 ...
- 明天软软onsite
现在在飞机上,还有1.5小时到达.买了网络包,速度不错.今年上半年第三次飞西雅图,过几天也许还有第四次... 今天群主FB加面系统设计非常顺利,祝他拿到大包裹,也希望拿到以后发大红包,这回我一定不能错 ...
- 【规范】前端编码规范——html 规范
文档类型 推荐使用 html5 的文档类型申明: <!DOCTYPE html> 语言属性 根据 html5 规范: 强烈建议为 html 根元素指定 lang 属性,从而为文档设置正确的 ...
- WOW.js和animate.css让页面滚动时显示动画
官网:http://mynameismatthieu.com/WOW/ bootstrap CDN服务:http://www.bootcdn.cn/wow/ 1.wow.js 实现了在网页滚动时的动画 ...
- MySql 查询银行卡号打码
),")) end as card_number from das.staff_base; case 函数 CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THE ...
- Python学习笔记(二)
标识符和关键字 1,邮箱的Python标识符是任意长度的非空字符序列(引导字符+后续字符.) python标识符必须符合两条规则--标识符区分大小写 (1)只要是unicode编码字母都可以充当引导字 ...
- Thread类的join()方法
public class Demo { /** * Thread类的join()方法 * -------------------------------- * 1)join() * 2)join(lo ...