本篇文章将会讲解Python数据结构中的list、tuple、set、dict。
list
list是一种有序集合
操作数据
直接添加数据
mylist = ['Google', 'Microsoft', 'Apple']
追加元素
mylist.append('Facebook') # ['Google', 'Microsoft', 'Apple', 'Facebook']
指定位置插入元素
mylist.insert(1, 'Orcle') # ['Google', 'Orcle', 'Microsoft', 'Apple', 'Facebook']
删除元素
# 删除尾部元素
mylist.pop() # 会返回被删除元素
# 删除指定位置的元素
mylist.pop(1) # 删除索引为1的元素,并返回删除的元素
替换元素
mylist[0] = 'Facebook'
mylist[1] = ['python', 'java', 'php'] # 集合的数据类型可以不同,也可以是集合
排序
mylist = [1, 2, 5, 4]
mylist.sort() # [1, 2 ,4, 5]
如果是字母,则根据Ascii码来排序
获取长度
同获取字符串长度一样,都是使用len()函数即可。
len(mylist)
获取数据
mylist[0] # 'Google
mylist[-1] # 'Apple'
如果索引超出范围是,会抛出异常:IndexError: list index out of range
Tuple
Tuple,元组,用法与List类似,但Tuple一经初始化,就不能修改,没有List中的append(), insert(), pop()等修改的方法
注意点
1. 一个元素问题
Tuput在定义只有一个元素的元组时候,需要在后面加上,
来消除歧义
t = (1,) # 如果需要是Tuple,就必须加上逗号,否则变成成了数字1了
# 这里如果没有“,”就变成了“(1)”
2. 引用类型问题
看一个例子:
t = (1, [2, 3])
t[1][0] = '2'
输入后并没有报错,值也的确修改了,这是因为Tuple中知识保存了对象的引用,所以这么修改也是合理的,如果不了解引用就去百度看看。
dict
全称dictionary,在Java语言中是Map,使用“键-值”对的形式存储。查找速度快。看个例子:
d = {'Beijing': '010', 'Guangzhou': '020'}
d['Shanghai'] = '021' # 如果不存在就添加,存在就是修改
d['Guangzhou'] # 返回对应键的值,如果不存在就报错
# 如果需要判断是否存在某个key,可以使用如下方法:
'Shenzhen' in d # False
'Guangzhou' in d # True
获取也可以使用get()方法:
d.get('Beijing') # '010'
d.get('Shenzhen') # None
# 第二个参数可以设置个默认值,如果不存在就会返回该默认值,而不是None
d.get('Shenzhen', '') # ''
set
set的特点是无序、不重复。set就是dict中的key,不存储value,
用法
s = set([1, 2, 3]) # {1, 2, 3}
s = set([3, 2, 1]) # {1, 2, 3}
s = set([1, 2, 3, 2, 2, 2]) # {1, 2, 3}
通过返回值可以看出set就是dict中的key
操作
1. 基本操作
s.add(4) # {1, 2, 3, 4}
s.remove(4) # {1, 2, 3}
2. 交集与并集
s1 = set([1, 2, 3])
s2 = set([1, 2, 4])
s1 & s2 # {1, 2}
s1 | s2 # {1, 2, 3, 4}