在使用Python编程中,我们最常用的几种集合类型是:List,Tuple,Set,Dict;下面简单聊聊这几种集合类型;
List 列表:相当于一个数组,不过list的长度是自动变化的而且列表元素自由的,不必每个元素都是同一种类型。它的简洁的定义方式是a=[]。是一种有序组合,可以删除和添加其中的元素;
List的基本操作如下:
##生成一个list,并赋值给list_ex
>>> list_ex=[1,3,4,"list","Tuple","dict",'set']
>>> list1_ex
>>> list_ex
[1, 3, 4, 'list', 'Tuple', 'dict', 'set']
>>> ##获取list中的元素个数
>>> len(list_ex)
7
#用索引访问list中的位置,访问范围:-n`~n-1;当索引超出范围时,会报一个IndexError错误
>>> list_ex[0]
1
>>> list_ex[-1]
'set'
>>> list_ex[len(list_ex)-1]
'set'
#在list尾部增加一个元素
>>> list_ex.append('over')
>>> list_ex
[1, 3, 4, 'list', 'Tuple', 'dict', 'set', 'over']
#插入元素到指定位置list_ex.insert(1,'2')
>>> list_ex
[1, '2', 3, 4, 'list', 'Tuple', 'dict', 'set', 'over']
>>> list_ex.insert(1,2)
>>> list_ex
[1, 2, '2', 3, 4, 'list', 'Tuple', 'dict', 'set', 'over']
#删除一个元素
>>> list_ex.pop()
'over'
>>> list_ex
[1, 2, '2', 3, 4, 'list', 'Tuple', 'dict', 'set']
#删除指定的元素
>>> list_ex.pop(2)
'2'
>>> list_ex
[1, 2, 3, 4, 'list', 'Tuple', 'dict', 'set']
#一个list的元素可以说另一个list
>>> list_exs=['Python',list_ex,'over']
>>> list_exs
['Python', [1, 2, 3, 4, 'list', 'Tuple', 'dict', 'set'], 'over']
#list_exs的长度应该是3
>>> len(list_exs)
3
#list_exs可以认为是一个二维数组
>>> list_exs[2][0]
'o'
>>> list_exs[1][3]
4
#设置一个空list,长度为0
>>> l=[]
>>> l
[]
>>> len(l)
0
Tuple 元组:也是一种有序列表,和list非常相似,但是tuple一旦初始化就不能再修改;无法对Tuple进行增加和删除元素。正是由于Tuple不可变,所以代码更加安全;在某种特殊情况下,要想修改Tuple中非list元素,可以先转换为list然后在修改,最后转回为Tuple;Tuple基本操作如下:
1 #定义tuple
2 >>>tp=('list','tuple','dict','set')
3 >>>tp
4 ('list','tuple', 'dict', 'set')
5 #取出tuple中的元素 与list相同
6 >>>tp[2]
7 'dict'
8 >>>tp[-1]
9 'set'
10 #定义只有一个元素的tuple 末尾要加,(1,)而不能直接用(1)
11 >>>tp=(1,)
12 >>>tp
13 (1,)
14 >>>tp=(2)
15 >>>tp
16 2
17 #tuple中包含list
18 >>>tp=(1,py,3)
19 >>>tp
20 (1, ['1','tuple', 'dict', 'set'], 3)
21 >>>tp[1][1]=2
22 >>>tp
23 (1, ['1',2, 'dict', 'set'], 3)
Dict 字典:即键值对类型,键名不可重复,并且不可以变化;简单的定义方式为:a={},是一种无序组合;其原理和现实查字典一样,通过字典中的索引列表查到所需要字的页码号,然后直接翻到该页查到你所需要的字的值;其查找速度非常快,不会随着字典的大小而变化。
字典的具体操作如下所示:
1 生成一个dict,dict内部存放的顺序和key放入的顺序是没有关系的
2 dt={'a':1,'b':2,'c':3,'d':4}
3 >>>dt
4 {'d':4, 'c': 3, 'b': 2, 'a': 1}
5 #通过key 取出 value
6 >>>dt['c']
7 3
8 #新建key 和 value
9 >>>dt['e']=5
10 >>>dt
11 {'e':5, 'd': 4, 'c': 3, 'b': 2, 'a': 1}
12 #通过key 重新对value赋值
13 #由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉
14 >>>dt['e']=10
15 >>>dt
16 {'e':10, 'd': 4, 'c': 3, 'b': 2, 'a': 1}
17 #如果key不存在,dict就会报错
18 >>>dt['f]
19
20 SyntaxError:EOL while scanning string literal
21 >>>dt['f']
22 Traceback(most recent call last):
23 File "<pyshell#1093>", line1, in <module>
24 dt['f']
25 KeyError:'f'
26 #通过in判断key是否在dict中
27 >>>'b' in dt
28 True
29 #通过get 方法获得key对应的value 不存在时返回指定的值
30 >>>dt.get('f',-1)
31 -1
32 >>>dt.get('a',-1)
33 1
34 #使用pop(key)删除指定的key 和对应的value
35 >>>dt.pop('a')
36 1
37 >>>dt
38 {'e': 10, 'd': 4, 'c': 3,'b': 2}
Set 集合:和dict类似,但一组key的集合,不存储value值;是一个无序的组合,其中key值是不可重复的(int,float,bool,str,tuple);具体操作如下:
#生产一个set
>>> St=set([1,2,3,4,5])
>>> St
{1, 2, 3, 4, 5}
# set中不会出现重复的键值
>>> St=set('23455432')
>>> St
{'3', '4', '5', '2'}
#通过add(key)增加一个key值
>>> St.add('1')
>>> St
{'3', '4', '1', '5', '2'}
#通过remove(key)向set删除key 值
>>> St.remove('3')
>>> St
{'4', '1', '5', '2'}