2023-12-19 02:07:36 | 我爱编程网
之前有说到 Python 中的字符串、列表以及元组在很多方面上比较相似,很大程度是因为它们的数据存储是有序的,也就是我们统称的序列,这才能让我们通过序号进行数据的获取,就像下面这样。
既然已经有了个统称,那么必然它们可以有相同的特性,这里列举了几个常用的方法,针对有序序列都是通用的。
如图可知这几个方法的大体意思,在我们判断一个元素是否存在于序列的时候会采取 in 或者not in 操作,返回值就是 bool 类型;使用 len 方法来获取序列的长度,通过 max 和 min 来得到序列中的最大值和最小值。
不过这里有个需要提醒的就是在我们判断字符串的极大值和极小值的时候,我们是通过 Ascll 码来比较的,所谓的这个码其实就是数值,我们通过 ord 方法可以得到字符串或者数字的Ascll 码,然后再来比较得到极大值和极小值。(空字符串也是有 Ascll 码的)
说了序列那么多,我们现在进入正题哈,说说集合,一个有区别于序列的数据类型。
如图所示,集合是由花括号包裹的编写形式,而且大体也拥有部分序列的特性,当然集合与序列最大的不同就是,集合是无序的,也就是说我们不能通过序号去得到相应的集合元素。那怎么得到集合中的元素呢,这个之后再说,我们先来看集合的一些特性。
对比着图中的输出结果,可能有人大概猜到一些东西,这里介绍了三种运算符。首先看看我们的减号在集合中的意义,当一个集合减去另一个集合得到一个新集合,其实也就类似于删除的感觉,在数学中我们叫做差集(不理解可以翻课本哈),在第一个集合中去除第二个集合中的元素,可能有人问,如果第二个集合更大怎么说,那么得到的就应该是空的集合,不理解的可以尝试看看。
然后我们再来看 & 操作,它代表的意思是取出两个集合中共同的元素组成的新集合,在数学中我们叫做交集,于此关于 | 操作,它代表的就是两个集合的合并,在数学中叫做并集,而这里又涉及到集合的一个重要特性,也就是不重复性,在一个集合中是不会出现相同的元素,不管是如何的操作,最后都会去除其中的重复元素。
说完这几种集合中的操作,我们再来看如何表示一个空的集合呢,如下:
由图可知,仅仅一个花括号并不能表示一个空集合,反而表示的是另外的一个数据类型,这个类型我们之后再说,那真正表示一个空集合就是 set() 。
好了,序列和集合的就说这么多,后面再说说其它的数据类型。
以下是Python程序,可以输入任意长度的列表序列x,并将该列表中的元素倒序输出:
Copy code
x = input("请输入一个列表序列,以逗号分隔:")
x = x.split(",")
x = [int(i) for i in x]
x_reverse = x[::-1]
print(x_reverse)
例如,如果输入x=[5,4,3,2,1,0],则程序输出[0, 1, 2, 3, 4, 5]。
我爱编程网(https://www.52biancheng.com)小编还为大家带来如何用python语言表示一个序列的相关内容。
列表和字符串都是Python中的序列类型,它们有很多共同特性,如都可以进行“+”操作和“*”操作,都可以使用for循环迭代等。
为什么要使用序列呢?通过图中有序与无序的对比可能会得出答案,在很多情况下,有序的序列可能会更加方便操作。
序列是有序元素的集合。在计算机中,序列的一个典型示例就是在内存中保存数据,内存的地址是从小到大有序排列的,每一个地址存放一个数据,如图所示。
实际上,Python中的序列有一些操作是通用的,即可以用到每一种序列类型中。以下序列操作分别用列表和字符串举例。
1. min()函数和max()函数
min()函数和max()函数分别返回序列的最小项和最大项。
>>> numbers = [15, -2, 3, 42, 102]
>>> max(numbers)
102
>>> min(numbers)
-2
>>> max('Python')
'y'
>>> min('Python')
'P'
2. in和not in
使用in和not in操作符来判断某个子序列是否在该序列中:
>>> 1 in [1, 2, 3]
True
>>> 4 not in [1, 2, 3]
True
>>> 'p' in 'Python' # Python区分大小写
False
>>> 'yth' in 'Python' # 不仅仅可以判断单个字符
True
3. “+”和“*”
使用“+”操作符来拼接序列,使用“*”操作符来重复相加序列:
>>> 'Py' + 'thon'
'Python'
>>> 'I love you!' * 5
'I love you!I love you!I love you!I love you!I love you!'
列表的“+”操作与extend()方法类似,但是“+”操作不是就地操作,有返回值:
>>> list1 = [1, 2, 3]
>>> list2 = [4, 5, 6]
>>> list3 = list1 + list2
>>> list3
[1, 2, 3, 4, 5, 6]
>>> list4 = list1.extend(list2)
>>> list4 # list4是None
>>> list1 # list2追加到了list1上
[1, 2, 3, 4, 5, 6]
包含数字的列表和包含字符串的列表进行“*”操作:
>>> numbers_list = [1] * 3
>>> strings_list = ['Python'] * 3
>>> numbers_list
[1, 1, 1]
>>> strings_list
['Python', 'Python', 'Python']
>>> numbers_list[0] = 3
>>> strings_list[0] = 'C'
>>> numbers_list
[3, 1, 1]
>>> strings_list
['C', 'Python', 'Python']
4. 索引和切片
索引和切片都是通用的序列操作,因此,不仅列表有索引和切片,字符串也有索引和切片:
>>> word = 'Python'
>>> word[0] # 第1个字符
'P'
>>> word[-2] # 倒数第2个字符
'o'
>>> word[:2] # 前2个字符
'Py'
>>> word[:2] + word[2:] # 字符拼接
'Python'
>>> word[-3:] # 后3个字符
'hon'
5. len()函数
len()函数用于获取序列的长度:我爱编程网
>>> words = """Python is a programming language that lets you work quickly and integrate systems more effectively."""
>>> len(words)
99
>>> lists_ = ['Python', 312, []]
>>> len(lists)
3
6. index()方法
序列中的index()方法用于查找第一个出现指定子序列的索引位置,如果不存在,那么会抛出ValueError异常:
>>> word = 'banana'
>>> word.index('a')
1
>>> word.index('na')
2
>>> word.index('an')
1
>>> word.index('c')
Traceback (most recent call last):
File "", line 1, in
ValueError: substring not found
index()方法也可以指定查找范围,即查找索引位置的起始值和结束值:
>>> numbers = [3, 1, 4, 1, 5]
>>> numbers.index(1)
1
>>> numbers.index(1, 2)
3
>>> word = 'banana'
>>> word.index('a', 2, 4)
3
7. count()方法
不仅仅是列表,每一种序列类型都有count()方法:
>>> word = 'banana'
>>> word.count('a')
3
>>> word.count('na')
2
>>> word.count('c')
0
>>> numbers = [1, 0, 1, 0, 1, 1]
>>> numbers.count(0)
2
>>> numbers.count(1)
4
2023-12-21 16:29:16
2023-12-24 20:21:11
2024-04-13 17:18:48
2024-04-09 17:44:01
2024-04-04 05:10:44
2024-03-31 15:14:06