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函数的更多相关文章

  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. [C++]“error C2712: 无法在要求对象展开的函数中使用__try”解决方案

    https://blog.csdn.net/shiqw5696/article/details/80664749 前段时间写了一篇关于C++异常捕获及异常处理的文章:c++异常捕获及异常处理try-t ...

  2. Odoo 进销存报表现已开源

    根据会计区间或自定义查询时间段,对仓库的产品出入库情况进行查看: 模块地址参见内部群公告.

  3. RSA/SHA1加密和数字签名算法在开放平台中的应用

    加密算法 加密算法分为两大类:1.对称加密算法:2.非对称加密算法.   密钥个数 加密 解密 对称加密 一个 使用密钥加密 使用同一个密钥解密 非对称加密 两个,公钥和私钥 使用其中一把密钥加密 使 ...

  4. Guava Cache用法介绍<转>

    Guava Cache是在内存中缓存数据,相比较于数据库或redis存储,访问内存中的数据会更加高效.Guava官网介绍,下面的这几种情况可以考虑使用Guava Cache: 愿意消耗一些内存空间来提 ...

  5. Hadoop、Spark 集群环境搭建问题汇总

    Hadoop 问题1: Hadoop Slave节点 NodeManager 无法启动 解决方法: yarn-site.xml reducer取数据的方式是mapreduce_shuffle 问题2: ...

  6. windows 10系统 上安装scrapy

    1.python的安装(我已安装完) 2.pip的安装(我已安装) 3.安装twisted https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 命令 ...

  7. AT&T汇编指令

    GAS中每个操作都是有一个字符的后缀,表明操作数的大小. C声明 GAS后缀 大小(字节) char b 1 short w 2 (unsigned) int / long / char* l 4 f ...

  8. python列表的切片操作允许索引超出范围

    其余的不说,列表切片操作允许索引超出范围:

  9. instr

    MySQL: select * from tableName where name like '%helloworld%'; Oracle:; select BLACK_VALUE, COUNT(*) ...

  10. go关键字之type用法

    1.定义结构体 type Student struct {     name string code int }       2.类型别名 type i int64 var age i = 30   ...