当你有很多书的时候,你会考虑买一个书柜,将你的书分门别类地摆放进去。使用了书柜不仅使房间变得整洁,也便于以后使用书时查找。在计算机程序中会有很多数据,这些数据也需要容器将它们管理起来,这就是数据结构
常见的有数组(Array)、集合(Set)、列表(list)、队列(queue)、链表(linkedlist)、树(tree)、堆(heap)、栈(stack)和字典(dictionary)等结构。
Python中数据结构主要有序列、集合和字典
注意:Python中并没有数组结构,因为数组要求元素类型是一致的。而Python作为动态类型语言,不强制声明变量的数据类型,也不强制检查元素的数据类型,不能保证元素的数据类型一致,所以Python中没有数组结构。
元组
元组(tuple)是一种序列(sequence)结构
序列
序列包括的结构有列表(list)、字符串(string)、元组、范围(range)和字节序列(bytes)。序列可以进行的操作有索引、分片、加和乘。
1)索引操作
序列中第一个元素的索引是0,其他元素的索引是第一个元素的偏移量。可以有正偏移量,称为正值索引;也可以有负偏移量,称为负值索引。正值索引的最后一个元素索引是“序列长度-1”,负值索引最后一个元素索引是“-1”。例如Hello字符串,它的正值索引如表
索引 | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
字符串 | H | e | l | l | o |
索引 | 0 | -4 | -3 | -2 | -1 |
---|---|---|---|---|---|
字符串 | H | e | l | l | o |
正值索引和负值索引表⬆️
PythonShell实例:
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 22:39:24) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> a = "Hello"
>>> a[0]
'H'
>>> a[1]
'e'
>>> a[4]
'o'
>>> a[-1]
'o'
>>> a[-2]
'l'
>>> a[5]
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
a[5]
IndexError: string index out of range
>>> max(a)
'o'
>>> min(a)
'H'
>>> len(a)
5
>>> #max函数返回最后一个函数
>>> #min函数返回第一个元素
>>> #len返回长度
2)序列和加和乘
PythonShell实例:
>>> a = "Hello"
>>> a * 3
'HelloHelloHello'
>>> print(a)
Hello
>>> a += ' '
>>> a += 'World'
>>> print(a)
Hello World
>>>
3)序列分片
序列的分片(slicing)就是从序列中切出小的子序列。分片使用分片运算符,分片运算符有两种形式。
- [start : end] :start是开始索引,end是结束索引
- [start: end : stop] :step是步长,步长可以为正数,也可以为负数
实例:
>>>a = 'Hello'
>>>a[1:3]
'el'
>>>a[:3]
'Hel'
>>>a[0:3]
'Hel'
>>>a[0:]
'Hello'
>>>a[0:5]
'Hello'
>>>a[:]
'Hello'
>>>a[1:-1]
'ell'