1.map函数

接收一个函数f和一个可迭代对象(列表,字典等),并通过把函数f依次作用在li每个元素上,得到一个新的list并返回

  1. # -*-coding:utf8 -*-
  2. import requests
  3. from lxml import etree
  4.  
  5. # url='https://www.dytt8.net/html/gndy/dyzz/list_23_1.html'
  6. headers={
  7. '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'
  8. }
  9. # response=requests.get(url,headers=headers)
  10. #在电影天堂的网页中,因为编码方式,requests库猜错了,所以response.text出现乱码
  11. # print(response.text)
  12. # text=response.content.decode('gbk')
  13. BaseDomain='https://www.dytt8.net'
  14. def get_detail_url(url):
  15. response=requests.get(url,headers=headers)
  16. text=response.content.decode('gbk')
  17. html=etree.HTML(text)
  18. detail_urls = html.xpath('//table[@class="tbspan"]//a/@href')
  19. map(lambda url:BaseDomain+url,detail_urls)
  20. print(detail_urls)
  21. get_detail_url('https://www.dytt8.net/html/gndy/dyzz/list_23_1.html')

使用map不会改变原值,而是得到一个新的值。比如一个列表传入,得到的是一个新的list

  1. lis ={'egon1':1,'egon2':2,'egon3':3}
  2. ret=map(lambda x: x+' SB', lis)
  3. for i in ret:
  4. print(i)

2.filter函数

过滤掉不符合条件的元素,传一个函数和一个可迭代对象,用法和map类似。序列的每个元素作为参数传给函数进行判断,返回True或False,

将返回True的元素放回新的列表中,

  1. #过滤表中所有奇数
  2. lis =[1,2,3,4,5,6,7,8,9,10]
  3. def is_odd(n):
  4. return n % 2 ==1
  5. new_list=list(filter(is_odd,lis))
  6. print(new_list)

3.zip函数

遍历每一个列表,在相应的列表中取出相应的值,生成新的列表,里面存放的是一个一个的元组。(遍历的是所有可迭代对象,只是列表比较常用)

  1. #zip
  2. #遍历每一个列表,在相应列表中取出相应的值
  3. a=[1,2]
  4. b=[3,4]
  5. c=list(zip(a,b))
  6. #得到的是一个列表,里面是一个一个的元组,元组里有每个列表遍历出来的值
  7. print(c)
  1. # -*-coding:utf8 -*-
  2.  
  3. import re
  4. import requests
  5.  
  6. def parse_page(url):
  7. headers={
  8. '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',
  9.  
  10. }
  11. response=requests.get(url,headers=headers)
  12. text=response.text
  13. # . 不能匹配\n 如果想要它匹配\n等字符,要加上flags=re.DOTALL
  14. titles=re.findall(r'<div\sclass="cont">.*?<b>(.*?)</b>',text,re.DOTALL)
  15. dynasties=re.findall(r'<p class="source">.*?<a.*?>(.*?)</a>',text,re.DOTALL)
  16. authors=re.findall(r'<p class="source">.*?<a.*?>.*?<a.*?>(.*?)</a>',text,re.DOTALL)
  17. content_tags=re.findall(r'<div class="contson".*?>(.*?)</div>',text,re.DOTALL)
  18. contents=[]
  19. for content in content_tags:
  20. x=re.sub(r'<.*?>','',content)
  21. contents.append(x.strip())
  22. poems = []
  23. for value in zip(titles,dynasties,authors,contents):
  24. title,dynasty,author,content=value
  25. poem={
  26. 'title':title,
  27. 'dynasty':dynasty,
  28. 'author':author,
  29. 'content':content
  30. }
  31. poems.append(poem)
  32. print(poems)
  33. #zip函数
  34. pass
  35.  
  36. def main():
  37. url='https://www.gushiwen.org/default_1.aspx'
  38. parse_page(url)
  39.  
  40. if __name__ == '__main__':
  41. main()

map函数和filter函数 zip函数的更多相关文章

  1. python中的enumerate、map、filter和zip函数

    引入 python内置了很多可以供我们直接调用的函数,这些函数的效率往往都非常高.我们在自己造轮子的同时,也非常有必要了解并且正确使用python给我们提供的大量的内置函数.在前面的博客里面我已经介绍 ...

  2. python中的map,filter,zip函数

    map() Return an iterator that applies function to every item of iterable, yielding the results 例如: a ...

  3. python中的zip()函数和map()函数

    一.zip()函数 1.语法: zip(iterable, ...) 参数说明: iterable,...-- 一个或多个迭代器; 在python2中: zip() 函数用于将可迭代的对象作为参数,将 ...

  4. Pythonh中的zip()与*zip()函数详解

    前言 实验环境: Python 3.6: 示例代码地址:下载示例: 本文中元素是指列表.元组.字典等集合类数据类型中的下一级项目(可能是单个元素或嵌套列表). zip(*iterables)函数详解 ...

  5. Python中的zip()与*zip()函数详解

    前言 实验环境: Python 3.6: 示例代码地址:下载示例: 本文中元素是指列表.元组.字典等集合类数据类型中的下一级项目(可能是单个元素或嵌套列表). zip(*iterables)函数详解 ...

  6. Python:zip()函数

    zip()函数的定义 从参数中的多个迭代器取元素组合成一个新的迭代器: 返回:返回一个zip对象,其内部元素为元组:可以转化为列表或元组: 传入参数:元组.列表.字典等迭代器. zip()函数的用法 ...

  7. python爬虫同时输出两个列表(zip函数)

    简介:在做爬虫时,xpath返回的是列表格式,我们又需要将列表中的元素一一对应并存放至字典中,这是就可以用zip函数. zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组, ...

  8. python之filter()函数

    filter()函数是python内置的一个高阶函数. filter()函数接受一个函数f 和一个list,这个函数f的作用是对每个元素进行判断,返回True或False,filter()根据判断结果 ...

  9. python 中zip()函数的使用

    zip(*iterables)函数的定义: zip()函数的对象Iterables,iterables可以有多个参数(元组,列表等可迭代对象)组成.通过zip()函数返回一组元组数据,每个元组中的第i ...

  10. python zip函数(11)

    一.zip函数描述和使用 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,返回的结果可以直接强转为list列表,这样做的好处是节约了不少的 ...

随机推荐

  1. Docker指令

    将showdoc容器下的/var/www 拷贝到主机 /home/bonker/showdocTsp1.214下 docker cp showdoc:/var/www /home/bonker/sho ...

  2. 【iCore4 双核心板_uC/OS-II】例程六:信号量——任务同步

    一.实验说明: 信号量是一个多任务内核提出的一个协议机构,上一个实验中我们介绍了信号量访问共享资源 的功能,其实信号量最初是用来控制访问共享资源的,它还可以用来同步一个中断服务函数和一个任 务,或者同 ...

  3. Tcp Udp发送包的大小限制问题

    以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.    这个1500字节被称为链路层的MTU(最大传输单元).    但这并不是指链路层的长度被限制在 ...

  4. css如何实现一个元素高度固定宽度按比例显示?

    用padding-top百分比可以实现宽度固定高度按比例展示,现在的需求是对一个video视频的盒子div高度是固定的,宽度如何按比例展示? 解决后效果如图: 红框标注的即是我在上面高度比例固定的范围 ...

  5. 库存秒杀问题-redis解决方案- 接口限流

    <?php/** * Created by PhpStorm. * redis 销量超卖秒杀解决方案 * redis 文档:http://doc.redisfans.com/ * ab -n 1 ...

  6. Wireshark安装使用及报文分析(图文详解)

    Wireshark是世界上最流行的网络分析工具.这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息.与很多其他网络工具一样,Wireshark也使用pcapnetwork l ...

  7. 121、Data Binding(数据绑定)(转载)

    http://www.jianshu.com/p/b1df61a4df77 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/060 ...

  8. MYSQL中动态行数据转列数据

    最近用到城市矩阵相关 需要将城市与城市距离转化为二维表 通过动态SQL直接实现 贴出来一起学习: 表就三个字段,包含在sql内. SET @sql:=''; SELECT @sql:=GROUP_CO ...

  9. JavaSE 类继承中函数重写

    (1) /** * 继承时重写方法的返回类型可以不一样 * 这时的返回值类型必须是与父类相同或者为子类. */ class A { public Object func(){ return null; ...

  10. python DBUtils 线程池 连接 Postgresql(多线程公用线程池,DB-API : psycopg2)

    一.DBUtils DBUtils 是一套允许线程化 Python 程序可以安全和有效的访问数据库的模块,DBUtils提供两种外部接口: PersistentDB :提供线程专用的数据库连接,并自动 ...