00:00
接下来我们要考察的衍生集合的这些操作呢,那就是基于两个集合去做的一些操作了啊,那首先我们看到可以对于两个集合去求取它的一个并集啊,那并集我们知道其实就是合并在一起嘛,对于例子而言,定义一个unit它的并集,那其实我们知道这里边可以直接调一个方法,叫做unit list1 unit list2,那其实得到的结果呢。专门做一个输出UN,得到的结果其实就像两个list直接连加在一起一样,像前面我们的三冒号的那个方法一样啊,这里可以直接对应的做一个输出例子二上面还是啊应一行分界线。
01:00
现在我们做一个是。大家可以看到啊,我们得到结果其实就是把两个集合非常简单粗暴的直接叠加在一起了,LIST1在前,LIST2在后,跟我们之前直接做这样的一个连接合并,其实是完全一样的啊,那当然了,这个并集呢,不仅仅是list可以做这样的操作啊,那对于这个两个set而言也可以做操作,大家需要注意,如果是that做空集会有什么区别吗?也是简单的都合在一起就完事了吗?啊,肯定就会做去重,如果有重复数据,那直接会,哎,当前的这个。重复数据要去掉,比方说。这里我们直接把这两个稍微的改一下,后距都不变。然后直接把这个搞成SET1SET2,后边我们set,接下来同样的操作放在这里。
02:10
Set,当然就没有这个三冒号这种做法了,我们看一下。现在我们定一个UN2SET1与UN set2。然后接下来我们把这个幽宁二打印出来。那我们自然想到了里边有三,呃,三七和二这三个元素是相同的,那么我们这里做了合并之后,大家会发现三七和二都只出现一次,而且所有的元素都变成了无序的一个状态,跟我们这里边的这个SET1SET2已经看不出到底是属于哪个啊,就是到底是按照什么顺序合并在一起的了,这个看的非常的明显,就像我们之前做了一个加加操作一样啊。呃,这里大家也可以做一个对比line。
03:02
一加加二。顺便我们也可以回顾一下之前所有集合类型做的对应的这些操作,好,那接下来呢,除了并集之外,当然还可以做交集了,交集我们知道交集的英文叫做intersection,操作也非常简单哦,方法的时候不是直接调这个inter方法。里边我们把这个list二传进来,高级的概念。Interception,我们看一下这个听错了啊,交集的概念。其实就是说两个元素要两个集合,要取它们公共的元素拿出来,就是所谓的交集啊,那接下来我们直接打印一下目前这个intersection。
04:05
前面我们还是要看的更加的明显一点,做一个分割线。运行一下。非常的明显,这里的共同的元素只有372,所以我们最后就得到了一个372构成的例子啊,这个如果是set的话,看的就会更加的明显啊。然后接下来还有另外一个比较特殊的是差级,差级指的是什么呢?它是它如果要两个集合类型求差集的话,我们其实求的是存在于一个集合里边,但是不存在于另外一个集合里边的那些元素,也就是说它们独有的某一个集合独有的元素,差集嘛,求差异化啊,所以接下来我们就会看到了,这里我们可以去求一个差集LIST1,去做一个LIST2,那其实这里我们会想到了它俩既然是主于,那自然我们能想到LIST1去diff list2,那应该是主于LIST1,但是不属于LIST2的元素拿出来差异化,那如果说反过来呢,LIST2是不是也可以去LIST1啊,那它的概念肯定是不一样的,应该表示的是属于LIST2,但不属不属于LIST1。
05:28
的那些元素啊,所以接下来我们可以把这个做一个输出D1。加上当前的一对应的DF2也可以做一个打印输出。上面我们还是直接分割线分割开。现在我们运行测试一下,看效果得到的是什么,非常的明显,上面得到的是一五八十九,这是。
06:06
大家还记得这是LIST1,呃,前面我们这个看不太清楚了啊,我们可以看到。例子的一里边比较有,就是它只属于自己的,只有一五八十九,这是属于自己的372是共同的嘛,啊,那所以属于它不属于LIST2的,而下边我们输出的呢,就是属于LIST2,不属于LIST1的是四十五四八十九,这是LIST2独有的啊,这就是关于他们的交并集,交集和差集,然后接下来呢,我们再看一个比较特殊的用法,就是所谓的拉链。啊,拉链大家知道是左右两边各有一个啊,各有一个这个锯齿,然后呢,一一搭配压在一起,就可以组成这样的一个拉链,那在我们的代码里边要调一个拉链方法,它指的是什么含义呢?简单来讲就是两个集合类型。
07:03
你这就相当于拉链的左边,另外一个就相当于拉链的右边,那对应的就是对应位置的元素。分别配对变成一个二元组,那如果要是有多出来的怎么办呢?落单的啊,那拉链长出来的部分那就没用了,那就拉不起来了,直接去掉,所以最后我们得到的就应该是一个二元组的新的衍生集合啊,那接下来我们直接打印出来看一看效果怎么样就知道了啊,那来下面这个我们还是一个分界,呃,我们现在得到的其实是一个Z拉链,直接加上前LIST1去拉链二。当然了,我们也可以反过来LIST2,也可以去拉练LIST1,那接下来我们看看输出的到底是什么。
08:01
其实非常简单,一共哎,这里边的这个元素明显是LIST2比LIST1要多,LIST1只有六个,LIST2这里边有七个,所以我们会看到拉链的结果呢,就是六个。与二元组构成的一个列表,那这里边每一个元组里边的数据是什么呢?那就是例子一的第一个数和例子二的第一个数构成第一个元组二,元组一,三,然后呢,第二个数,两个列表里的第二个数构成第二个元组对三七。如果要是LIST1去拉链LIST2,那就是LIST1的元素都在前,如果反过来的话,那就是例二的元素都在前。所以得到这个结果非常的浅显易懂,一看就知道是怎么回事。最后呢,我们再来说一个比较有趣的用法,那就是所谓的滑窗,滑窗又是一是一,一个什么概念呢?哎,我们知道有些时候我们可以希望在这个数据上去开一个窗口,那所谓的窗口那就是直接画一个框,框起来一些数据,然后我们单独处理这一部分数据,对吧?那划窗指的是什么呢?就是这个框还要滑动,还要往前移动。
09:18
哎,比方说我框这三个,然后再框这三个,框下三个,哎,这就是我们所谓的这个划窗,每一次框起来的元素都会一样,那接下来我们这个调用的方法也可以给大家看一眼啊,那这个划窗调用的方法就是一个叫做看到做sliding的方法,里边呢,可以直接传一个参数,就是它的一个size,当前窗口的大小,比方说我这里边直接传一个三,那就表示要得到一个大小为三的滑动窗口,然后这个窗口呢,基于例子一在那滑,哎,大家可能会想到,那得到的东西到底是个到底是个啥呢?这个如果我们要直接在这儿想把它打印出来的话,先看一看到的是什么。
10:10
看到得到的是一个erator啊,也就是说这里边我们最后得到的呢,还是一个集合类型,是一个迭代器啊,所以接下来我们就考虑要把它做一个。相当于还是要做一个。便利元素,然后再打印输出了,看看里边到底是啥,既然是ER嘛,不用之前类似于便利。带气那种方式啊,Element直接把它放在这,然后接下来line element。直接做一个打印。啊,我们看到了,原来它是一组list构成的一个集合类型啊,一个迭代器啊,那所以这里边我们看到每一个list是啥呢?就是我们开窗口框起来的那三个数嘛,第一个list就是1353个数构成的list,第二个就是下一个。
11:10
往前挪滑动得到的是357,再往后572,最后一个七二八十九。三个数一个窗口,三个数一个窗口,最后得到了这样的四个list,构成一个新的集合类型。这就是滑窗操作能够产生的东西,那呃,大家可能刚才也看到了sliding这个方法呢,可以传一个参数,那另外呢。我们也可以传两个参数,它可以重,呃,我们这儿有这个重载方法啊,那如果传两个参数,后面这个参数叫什么呢?就叫做step,它叫做不长,什么叫不长呢?这就代表了我们当前这个窗口滑动每一次滑动的范围。我们之前所说的这个滑动是怎么滑呢?其实这个看起来不像滑,应该叫往前挪挪动,对吧,一个一个的往前走嘛,那如果真的要是往前滑的比较大一点,有可能怎么样呢?我隔两个划一次看那这种这是不是也叫做滑动窗口啊,至于说每一次划的时候,我隔几个数去取下一个,开下一个窗口,那这个。
12:22
相隔的距离就叫做端口滑动长,之前我们这个默认情况下,源码里面看的也清楚,接力的不长,其实就是一,也就是说下一个窗口跟上一个窗口它间距是一。那如果我们想让它滑动的稍微大一点的话啊,那其实也是可以的啊,比方说这里面我们可以直接定义一个,呃,我们定义再去划二个窗口吧。上面还是分割哎。我们去划第二个列表,然后呢,稍微的隔大一点四个数。
13:04
为一个窗口,然后呢,每隔两个数做一个滑动,我们看截取出来的元素又是什么样。啊,大家看到这里边截取的这个过程,就是基于这里四个数,当然第一个窗口就是三七二四十五,第二个窗口从哪里开呢?大家看划隔了两个数,从二这里开始取四个数二四十五,四八,然后第三个窗口怎么取呢?再隔两个数,然后从四这里开始,四八十九,但是后面不够了,不够我们也要把最后一个窗口写出来,所以它就只有三个数。因为最后我一定要把这个窗口,就是这里边列表是所有数据都得都得包含进去,对吧,你不能这个最后有些数据就直接丢掉了,所以即使数据不全,我们也要把最后一个窗口把它画出来啊,最后一个窗口是有可能数据达不到当前我们设置的那个size大小的,这个要稍微的注意一下。
14:05
然后这里还有另外一种比较特殊的一个定义,就是我们会看到啊,当前的这一个滑动步长和size其实是没什么要求的,有一种特殊的情况下,会变得当前的滑动不长和窗口的大小完全一样,那又会出现什么什么情况呢?那这种情况就会出现。我们整个的这一个窗口一开始372,然后接下来呢,前面的数就相当于全划过去了,然后直接从下一个数开始,45,四八,然后最后从下一个数开始,19,最后一个窗口不够三个数,但是也要把它列出来,所以就只有十九一个数。啊,所以前面我们这种滑动它都有重复,就窗口之间是有重复数据的,它是一点一点往前滑,而现在这种滑动呢,那就相当于一滑就全滑出去了,直接从下一个数开始算了,所以有时候呢,又把这种特殊的滑动窗口叫做滚动窗口,直接翻一个跟头全部滚过去了。
15:13
这就是关于skyla里边我们做集合类型的衍生集合操作可以有各种各样的。这种行为啊,我们刚才讲解的都是涉及到两个不同的集合,能够做的衍生集合操作。
我来说两句