组合数据类型
- 列表
- 元组
- 字典
- 集合
列表
list 是一种有序的集合,可以随时添加和删除其中的元素
classmates = [’Michael’, ’Bob’, ’Tracy’]
classmates
['Michael','Bob','Tracy']
用索引来访问list 中每一个位置的元素,索引是从0 开始的,最后一个元素的索引是-1
classmates[0]
’Michael’
classmates[1]
’Bob’
classmates[-1]
’Tracy’
classmates[-2]
’Bob’
list 是一个可变的有序表,可以往list 中追加元素到末尾
classmates.append(’Adam’)
classmates
[′Michael′,′ Bob′,′ Tracy′,′ Adam′]
可以把元素插入到指定的位置,比如索引号为1 的位置
classmates.insert(1, ’Jack’)
classmates
[′Michael′,′ Jack′,′ Bob′,′ Tracy′,′ Adam′]
用pop() 方法删除list 末尾的元素
classmates.pop()
’Adam’
classmates
[′Michael′,′ Jack′,′ Bob′,′ Tracy′]
用pop(i) 方法删除指定位置的元素
classmates.pop(1)
’Jack’
classmates
[′Michael′,′ Bob′,′ Tracy′]
赋值给对应的索引位置把某个元素替换成别的元素\
classmates[1] = ’Sarah’
classmates
[′Michael′,′ Sarah′,′ Tracy′]
list 里面的元素的数据类型可以不同
L = [’Apple’, 123, True]
list 元素也可以是另一个list
p = [’asp’, ’php’]
s = [’python’, ’java’, p, ’scheme’]
s[2][1]
’php’
元组
元组tuple 是一种有序的集合,一旦初始化就不能修改,使代码更安全
classmates = (’Michael’, ’Bob’, ’Tracy’)
元组--属性
tuple 不能改变,不可以追加、删除、替换
t = (1,2)
t
(1,2)
tuple的'可变性'
t = ('a', 'b', ['A', 'B'])
t[2][0] = 'X'
t[2][1] = 'Y'
t
('a', 'b', ['X', 'Y'])
字典
字典是一种可变的无序的数据组合类型,使用键-值(key - value)储存,进行极快的查找。
键必须是唯一的,必须是可哈希的
d = {'Michael' : 95, 'Bob': 75, 'Tracy': 85}
d['Michael']
95
给定一个名字,比如'Michael', dict 在内部就可以直接计算出Michael对应的存放成绩的'页码'
也就是95这个数字存放的内存地址,直接取出来,所以速度非常快
在放进去的时候,必须根据key算出value的存放位置,取的时候才能根据key直接拿到value。
一个key只能对应一个value,多次对一个key放入value,后面的值会把前面的值冲掉。
d['Jack'] = 90
d['Jack']
90
d['Jack'] = 88
d['Jack']
88
字典更新和删除
字典是可变的,所以可以用update进行更新。
d={'Michael':95,'Bob':75,'Tracy':85}
d1={'Jack':80}
d.update(d1)
d
{'Jack': 80,'Michael':95, 'Bob':75,'Tracy':85}
如果要删除一个key,使用pop(key)方法。
d.pop('Bob')
75
d
{'Jack': 80,'Michael':95,'Tracy':85}
集合
集合是一个无序的,不重复的元素集,包含两种类型:可变集合(set)和不可变集合(frozen set)
(1)可变集合:一组key的集合,不出村value,可添加和删除元素,非可哈希的,不能用作字典的键,也不能做其他集合的元素。
s = set([1,1,2,2,3,3])
s
1,2,3
(2) 不可变集合(frozenset):不可添加和删除元素,可哈希的,能用做字典的键,能做其他集合的元素。
集合的添加和删除
set集合是可变的,可以用add(key)进行添加。
s.add(4)
s
1,2,3,4
如果要删除一个key,用remove(key)方法
s.remove(4)
s
1,2,3
集合的交集和并集
两个set可以做数学意义上的交集、并集等操作
s1 = set([1,2,3])
s2 = set([2,3,4])
s1 & s2
2,3
s1 | s2
1,2,3,4
练习:
给定一个字符串变量s,编写python代码统计字符串中每个字符出现的频度、
例如
s='hello', 则输出:
e:1, h:1, l:2,o:1
s = 'hello world'
d = {}
for ch in s:
if d.get(ch)==None:
d[ch] = 1
else:
d[ch] += 1