Partition()函数

2016年啦,但是过节仿佛跟我没什么关系,我还是一如既往苦逼的做着苦逼的事儿。不过还是希望在新的一年里,各位看官可以身体健康万事顺意,这个地球可以世界和平,那个小兔子能乖乖的嫁给我,而且杭州的各种上市公司慈悲为怀的hr们可以拿一份好的offer给我,让我早日可以成为高富帅等等等等等等。

好了,梦回现实,没有那么多时间用来扯淡。看了一篇http://www.codesec.net/view/165565.html,里面提到了partition()函数,这个函数跟split差不多,都是搞切割的。

但是partition()具体是来根据括号内的分隔符将一个字符串分割,而且仅仅是切一刀,生成的结果是一个元祖。

AAA="http://123://.com"     #这里有两个://#

print(AAA.partition("://"))      #以://为分隔符开切#

生成的结果是:‘http‘, ‘://‘, ‘123://.com‘)

如果改一下,以com作为分隔符开切呢?

print(AAA.partition("com"))

回车的结果是:(‘http://123://.‘, ‘com‘, ‘‘)

如果是一个不存在的字符作为分隔符呢?那么返回的就是字符本身+两个空的元。

要知道,元祖是可以排序的,这样就可以很简单的想到,partition()[1]=分隔符本身

这些仅仅是一个皮毛东西,但是可以深挖掘一下。partition其实可用来切大段大段的源代码。我们还是以前几篇文章里的html作为例子。

html=‘‘‘

<html>

<head>

<title>A</title>

</head>

<body>

<div class="topic"><a herf="www.51cto.com/welcome.html">AA!</a>

<div class="list">

<url>

<li><a href="http://www.51cto.com/1.html">AAA</a></li>

<li><a href="http://www.51cto.com/2.html">AAAA</a></li>

<li><a href="http://www.51cto.com/3.html">AAAAA</a></li>

</url>

</div>

</div>

</body>

</html>‘‘‘

str="<title>A</title>"

content=html.partition(str)[2]

str1="</url>"

content1=content.partition(str1)[0]

print(content1)

这个程序的答案就是两头切的中间那一段,即

</head>

<body>

<div class="topic"><a herf="www.51cto.com/welcome.html">AA!</a>

<div class="list">

<url>

<li><a href="http://www.51cto.com/1.html">AAA</a></li>

<li><a href="http://www.51cto.com/2.html">AAAA</a></li>

<li><a href="http://www.51cto.com/3.html">AAAAA</a></li>

这样也能达到“大锤敲缝”的目的!

时间: 2024-10-09 08:21:26

Partition()函数的相关文章

快速排序 partition函数的所有版本比较

partition函数是快排的核心部分 它的目的就是将数组划分为<=pivot和>pivot两部分,或者是<pivot和>=pivot 其实现方法大体有两种,单向扫描版本和双向扫描版本,但是具体到某个版本,其实现方法也是千差万别,参差不齐.本着严谨治学的态度,我将目前所接触的所有实现列举出来,并作出比较.除了伪代码,我也会给出相应的C&C++实现,供读者参考. 单向扫描: 下面是算法导论中例子 PARTITION(A, p, r) x = A[r] i = p - 1 fo

快速排序中的partition函数详解

快速排序的精髓就在partition函数的实现.我们构建两个指针,将数组分为三部分,黑色部分全部小于pivot,中间蓝色部分都大于pivot,后面红色部分未知.i指针遍历整个数组,只要它指向的元素小于pivot就交换两个指针指向的元素,然后递增. // arr[]为数组,start.end分别为数组第一个元素和最后一个元素的索引 // povitIndex为数组中任意选中的数的索引 int partition(int arr[], int start, int end, int pivotInd

快速排序的Partition函数

1 //数组中两个数的交换 2 static void swap(int[] nums, int pos1, int pos2){ 3 int temp = nums[pos1]; 4 nums[pos1] = nums[pos2]; 5 nums[pos2] = temp; 6 } 7 /** 8 * 快速排序中,在数组中选择一个数字,将数组中的数字分为两部分 9 * start, end 介于 0 与 nums.length之间 10 */ 11 static int partition(i

partition函数两种实现方法

patition函数根据某种比较关系将数组分成两部分,下面根据元素比某个数字大或小,以此为基准划分,给出两种实现方式 1)若数组为a[0]~a[n-1],函数调用如下 partition(a,-1,n-1)a[n-1]一般作为基准元素所在的位置,返回基准元素应该放置的下标 int partition(int *a, int i, int j, int pivot){ do{ while (a[++i] < pivot); while ((j > 0) && (a[--j] &g

find_if函数与partition函数的转换

编写程序,求大于等于一个给定长度的单词有多少.我们还会修改输出,使程序只打印大于等于给定长度的单词. 使用find_if实现的代码如下: #include<algorithm> #include<vector> #include<iostream> #include<string> using namespace std; void biggies(vector<string> &words,vector<string>::s

寻找序列中最小的第N个元素(partition函数实现)

Partition为分割算法,用于将一个序列a[n]分为三部分:a[n]中大于某一元素x的部分,等于x的部分和小于x的部分. Partition程序如下: long Partition (long a[], long p1, long p2) {//对a[p1]~a[p2]进行分割,返回分割点的序号, p1, p2分别为元组的第一 //个和最后一个元素 long i, j; int x; i = p1; j = p2; x = a[i]; while (i<j) {while ( a[j] >

字符串的partition函数

partition函数 str1='sdga2a34'aa=str1.partition('a') print(aa) """ ('sdg', 'a', '2a34') """ rpartition函数,和上面的函数不同,它是从右边开始切割的 str1='sdga2a34' aa=str1.rpartition('a') print(aa)""" ('sdga2', 'a', '34') ""&q

快速排序中的partition函数的枢纽元选择,代码细节,以及其标准实现

很多笔试面试都喜欢考察快排,叫你手写一个也不是啥事.我很早之前就学了这个,对快速排序的过程是很清楚的.但是最近自己尝试手写,发现之前对算法的细节把握不够精准,很多地方甚至只是大脑中的一个映像,而没有理解其真正的本质意图.于是今天结合了<数据结构>(严蔚敏),和<算法导论>进行一番探究. 首先先给出快速排序的严蔚敏版的实现(实际上这部分的partition也是算法导论里面思考题的实现方式,细节可能不一样): 1 public class QuickSort implements So

Hadoop Partition函数应用(归档)

一.实例描述 在这个实例里我们使用简单的数据集,里面包含多条数据,每条数据由姓名.年龄.性别和成绩组成.实例要求是按照如下规则归档用户. 1.找出年龄小于20岁中男生和女生的最大分数 2.找出20岁到50岁男生和女生的最大分数 3.找出50岁以上的男生和女生的最大分数 样例输入: 样例输出: 1.年龄小于20岁中男生和女生的最大分数 2.20岁到50岁男生和女生的最大分数 3.50岁以上的男生和女生的最大分数 二.设计思路 基于实例需求,我们通过以下几步完成:第一步,编写Mapper类,按需求将