find函数

BeautifuSoup实用方法属性总结

荒凉一梦 提交于 2019-11-27 07:05:31
一、对象 Beautifulsoup中有4个重要的对象: Tag,标签,可以获取标签文本,属性 BeautifulSoup,继承自Tag,所以Tag的方法它基本都能用 NavigableString,文本字符串 Comment,注释 二、创建BeautifulSoup对象 2.1 通过字符串创建 from bs4 import BeautifulSoup html = """ <html><head><title>The Dormouse's story</title></head> <body> <p class="story">Once upon a time there were three little sisters; and their names were </p> """ soup = BeautifulSoup(html, 'html.parser') print(soup.prettify()) 2.2 通过文件创建 from bs4 import BeautifulSoup with open(r"F:\tmp\etree.html") as fp: soup = BeautifulSoup(fp,"lxml") print(soup.prettify()) 三、Tag关系属性 关系 说明 parent 父节点 parents 祖先节点 next

C++ 函数适配器

让人想犯罪 __ 提交于 2019-11-27 00:44:34
1、考虑下面的需求,在一个int的vector中,找出一个比5的元素,容易想到的解决办法,定义一个方法对象,使用模板,如下: vector<int>::iterator iter = find_if(intVec.begin(),intVec.end(),Finder<int>(3)); 2、分析 find_if的伪代码如下: for (; _First != _Last; ++_First) { if (_Pred(*_First)) { return _First; } } return _Last; 也就是说,第三个参数只要能够执行 _Pred(*_First) 就可以,也就是具备隐式接口_Pred(*_First)。 方法对象Finder<int>(3) 满足条件。 3、有没有其他的办法呢? 我们已经有了方法对象greater 用于比较两个对象的大小,以及参照物,能不能使用greater呢? 这里存在问题:greater接收两个参数比较大小,而find_if的第三个参数具备隐式接口_Pred(*_First),只接受一个参数。 这就需要解决,greater接受两个参数,把其中一个参数(参照物)固定下来,转化为只接受一个参数的方法。这就是方法适配器。 也就是说,对greater和已知的参照物提供一层封装,对外只接受一个参数,对内转交给greater,来比较变量和参照物的大小。

三十分钟学习STL【转载】

≯℡__Kan透↙ 提交于 2019-11-26 18:36:52
原文: http://net.pku.edu.cn/~yhf/UsingSTL.htm 太长30分钟是看不完的,不过花一个小时把他看完能对STL有个大致的了解,g++下需要加iterator头文件 以下为原文 这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。 译者:kary contact:karymay@163.net STL概述 STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。 要点 STL算法作为模板函数提供。为了和其他组件相区别,在本书中STL算法以后接一对圆括弧的方式表示,例如sort()。 STL另一个重要特性是它不是面向对象的。为了具有足够通用性,STL主要依赖于模板而不是封装,继承和虚函数(多态性)——OOP的三个要素。你在STL中找不到任何明显的类继承关系。这好像是一种倒退,但这正好是使得STL的组件具有广泛通用性的底层特征。另外,由于STL是基于模板,内联函数的使用使得生成的代码短小高效。 提示