Python3 中有六个标准的数据类型:
6种数据类型对比
数据类型 | 标准用法 | 说明 | 数据是否可变 | 是否属于序列 |
---|---|---|---|---|
Number(数字) | a = 123.4 | 包含4种基本类型:int、float、bool、complex(复数) | ||
String(字符串) | str = ‘liukai’ | 字符串可以被索引和切片,但是不能更改 | 是 | |
List(列表) | list = [‘k’,‘a’,‘i’] | 列表可以被索引和切片,可以包含所有数据结构 列表切片的时候,可以指定步长,如letter[1:4:2] 有pop,append等方法 |
可变数据 | 是 |
Tuple(元组) | tuple = (‘liu’,‘kai’) | tuple元素不可变,但是可以包含list列表可变对象 空元组初始化:tup0 = () 单元素元组初始化:tup1 = (1,) |
是 | |
Set(集合) | values = {a,b,c} | 基本功能是进行成员关系测试和删除重复元素 空集合使用set()创建,因为{ }表示空字典 |
可变数据 | |
Dictionary(字典) | dict = {‘name’:‘liukai’, ‘number’:12345} | 字典的元素是键值对,关键字不可变,且不能重复 创建空字典用{} |
可变数据 |
4种数据结构的初始化
>>> a = [] # list
>>> b = () # tuple
>>> c = set() # set
>>> d = {} # dict
方法 | 描述 |
---|---|
list.append(x) | 把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。 |
list.extend(L) | 通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L,L是一个列表。 |
list.insert(i, x) | 在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。 |
list.remove(x) | 删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。 |
list.pop([i]) | 从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素。元素随即从列表中被移除。(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,你会经常在 Python 库参考手册中遇到这样的标记。) |
list.clear() | 移除列表中的所有项,等于del a[:]。 |
list.index(x) | 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。 |
list.count(x) | 返回 x 在列表中出现的次数。 |
list.sort() | 对列表中的元素进行排序。 |
list.reverse() | 倒排列表中的元素。 |
list.copy() | 返回列表的浅复制,等于a[:]。 |
用 append()
方法可以把一个元素添加到堆栈顶。
用不指定索引的pop()
方法可以把一个元素从堆栈顶释放出来。
>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack
[3, 4, 5]
在列表的最后添加或者弹出元素速度快,然而在列表里插入list.insert(0,x)
或者从头部list.remove(list[0])
弹出速度却不快(因为所有其他的元素都得一个一个地移动)。
方法一(使用insert
和remove
):
>>> list = [0,1,2,3]
# 指定位置插入
>>> list.insert(0,-1)
>>> list
[-1, 0, 1, 2, 3]
# 删除指定值
>>> list.remove(list[0])
>>> list
[0, 1, 2, 3]
方法二(import deque
):
核心是appendleft()
和popleft()
这两个函数。
>>> from collections import deque
>>> queue = deque([0,1,2,3])
# 在左侧操作
>>> queue.appendleft(-1)
>>> queue
deque([-1, 0, 1, 2, 3])
>>> queue.popleft()
-1
>>> queue
deque([0, 1, 2, 3])
# 在右侧操作
>>> queue.append(4)
>>> queue
deque([0, 1, 2, 3, 4])
>>> queue.pop()
4
>>> queue
deque([0, 1, 2, 3])
在序列中遍历时,索引位置和对应值可以使用 enumerate()
函数同时得到,基本用法是
for index,value in enumerate(sequence):
print(index,value)
for ii,ch in enumerate(string)
>>> string = 'liukai'
>>> for ii,ch in enumerate(string):
... print(ii,ch)
...
0 l
1 i
2 u
3 k
4 a
5 i
for index,value in enumerate(list)
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
... print(i, v)
...
0 tic
1 tac
2 toe
# 按照顺序遍历
>>> for v in sorted(['tic', 'tac', 'toe']):
... print(v)
...
tac
tic
toe
for key,value in dict.items()
>>> phone_num = {'liukai':188,'xumengsi':183}
>>> for key,value in phone_num.items():
... print(key,value)
...
liukai 188
xumengsi 183
for element_a,element_b in zip(sequence_a,sequence_b)
>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):
... print('What is your {0}? It is {1}.'.format(q, a))
...
What is your name? It is lancelot.
What is your quest? It is the holy grail.
What is your favorite color? It is blue.
参考文献