Python中的序列与集合

Python中的序列与集合,第1张

之前有说到 Python 中的字符串、列表以及元组在很多方面上比较相似,很大程度是因为它们的数据存储是有序的,也就是我们统称的序列,这才能让我们通过序号进行数据的获取,就像下面这样。

既然已经有了个统称,那么必然它们可以有相同的特性,这里列举了几个常用的方法,针对有序序列都是通用的。

如图可知这几个方法的大体意思,在我们判断一个元素是否存在于序列的时候会采取 in 或者not in *** 作,返回值就是 bool 类型;使用 len 方法来获取序列的长度,通过 max 和 min 来得到序列中的最大值和最小值。

不过这里有个需要提醒的就是在我们判断字符串的极大值和极小值的时候,我们是通过 Ascll 码来比较的,所谓的这个码其实就是数值,我们通过 ord 方法可以得到字符串或者数字的Ascll 码,然后再来比较得到极大值和极小值。(空字符串也是有 Ascll 码的)

说了序列那么多,我们现在进入正题哈,说说集合,一个有区别于序列的数据类型。

如图所示,集合是由花括号包裹的编写形式,而且大体也拥有部分序列的特性,当然集合与序列最大的不同就是,集合是无序的,也就是说我们不能通过序号去得到相应的集合元素。那怎么得到集合中的元素呢,这个之后再说,我们先来看集合的一些特性。

对比着图中的输出结果,可能有人大概猜到一些东西,这里介绍了三种运算符。首先看看我们的减号在集合中的意义,当一个集合减去另一个集合得到一个新集合,其实也就类似于删除的感觉,在数学中我们叫做差集(不理解可以翻课本哈),在第一个集合中去除第二个集合中的元素,可能有人问,如果第二个集合更大怎么说,那么得到的就应该是空的集合,不理解的可以尝试看看。

然后我们再来看 & *** 作,它代表的意思是取出两个集合中共同的元素组成的新集合,在数学中我们叫做交集,于此关于 | *** 作,它代表的就是两个集合的合并,在数学中叫做并集,而这里又涉及到集合的一个重要特性,也就是不重复性,在一个集合中是不会出现相同的元素,不管是如何的 *** 作,最后都会去除其中的重复元素。

说完这几种集合中的 *** 作,我们再来看如何表示一个空的集合呢,如下:

由图可知,仅仅一个花括号并不能表示一个空集合,反而表示的是另外的一个数据类型,这个类型我们之后再说,那真正表示一个空集合就是 set() 。

好了,序列和集合的就说这么多,后面再说说其它的数据类型。

序列是python的基本数据结构,序列中的每个元素被分配一个序号即索引,索引从0开始。

序列的两种常用类型:列表和元组。

列表与元组的区别:列表可修改,元组不能修改。

通用序列 *** 作

1、索引:索引0指向第一个元素,索引-1指向最后一个元素。

2、程序:输入年,月(1-12),日(1-31),然后打印出相应的日期的月份名称。

代码详解:months=[]:定义一个months序列。

endings=['st','nd','rd']+17['th']\

+['st','nd','rd']+7['th']\

+['st']:定义一个endings序列,用来表示1-31的英文缩写,1st,2nd,3rd,4-20th,21st,22nd,23rd,24-30th,31st。

代码运行输出结果:

3、分片:提取序列中的某个范围内的元素。

分片tag[9:30]:第一个索引号9是包含在分片内的,第二个索引号30则不包含在分片内。

4、如果要去序列中最后一个最后一个元素怎么办?

可以通过置空,最后一个一个索引来获取最后的元素。可以通过置空最前的索引来获取第一个元素。可以两边都置空来获取整个元素。

5、步长:

正数步长:从序列的头部开始向右提取元素,直到最后一个元素。

负数步长:从序列的尾部开始向左提取元素,直到第一个元素。

6、序列运算

序列相加:对序列进行连接 *** 作,列表与字符串是无法连接在一起的。

序列相乘:数字x乘以一个序列会生成新的序列,即原来的序列被重复x次。

None,空列表和初始化:初始化一个长度为10的列表。

代码分析:在屏幕上打印一个由字符组成的盒子,这个盒子在屏幕上居中,而且根据用户输入的句子自动调整大小。

成员资格:in运算符,输入布尔运算符,当条件为真时返回true,为假则返回false。

以上代码在UNIX系统中,可以检查文件可写和可执行权限的脚本。

以上代码可以检查输入的用户名是否存在于用户列表中。

以上代码可以作为过滤垃圾邮件的一部分。

代码分析:查看用户输入的用户名,密码是否存在于数据库中,如果存在则打印'Access granted'

程序运行结果:

内建函数:len:返回序列中包含元素的数量,min:返回序列中最小的元素,max:返回序列中最大的元素。

字母有26个,数字只有0-9,如果你取1开始,只有1-9,9个数字,中间不加分割符怎么行?

"abbb"转换后 1222,

"lv"转换后也是 1222 啊,abv 也是 1222啊,lbb也是1222啊,avb也是1222啊。

loc中的数据是列名,是字符串,所以前后都要取;iloc中数据是int整型,所以是Python默认的前闭后开

构建数据集df

loc函数主要通过行标签索引行数据 ,划重点, 标签!标签!标签!

loc[1] 选择行标签是1的(从0、1、2、3这几个行标签中)

loc[0:1] 和 loc[0,1]的区别,其实最重要的是loc[0:1]和iloc[0:1]

索引某一列数据,loc[:,0:1],还是标签,注意,如果列标签是个字符,比如'a',loc['a']是不行的,必须为loc[:,'a']。

但如果行标签是'a',选取这一行,用loc['a']是可以的。

iloc 主要是通过行号获取行数据,划重点,序号!序号!序号!

iloc[0:1],由于Python默认是前闭后开,所以,这个选择的只有第一行!

如果想用标签索引,如iloc['a'],就会报错,它只支持int型。

ix——结合前两种的混合索引,即可以是行序号,也可以是行标签。

如选择prize>10(prize为一个标签)的,即 dfloc[dfprize>10]

还有&并或等 *** 作

python选取特定列——pandas的iloc和loc以及icol使用

pandas入门——loc与iloc函数

pandas中loc、iloc、ix的区别

pandas基础之按行取数(DataFrame)

以上就是关于Python中的序列与集合全部的内容,包括:Python中的序列与集合、python常用序列结构、Python 字母行转序号应该怎么做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10083706.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存