组合类型
python
1. 序列类型
- 包含有string, list, tuple
- 可使用的操作符和函数:
| 操作符 |
描述 |
| x in/not in s |
判断x在不在序列s中,返回bool |
| s + t |
相同序列拼接 |
| s*n。n*s |
序列复制 |
| s[j] |
序列索引 |
| s[i:j[:k]] |
分片索引 |
| len(s) |
返回元素个数 |
| min(s),max(s) |
返回最小最大元素 |
| index(x[,i[,]j]) |
返回x在[i,j)中第一次出现的位置 |
| s.count(x) |
返回x出现的次数 |
| <,<=,>,>=,==,!= |
逐个元素进行比较(大写字母小于小写字母),返回bool |
1. tuple
t = (1, 2, 3) #元组采用()和,来表示t = (1, ) #当只有一个元素时,逗号不能缺省t = 1, 2, 3 #()可以缺省t = tuple(1, 2) #采用tuple()创建
- 特点:元组不可以修改指的是元组的元素(指针)不可修改。
- 优点:
1)访问速度比list快
2)数据安全性高
3)可以用作字典的key
2. list
ls = [] #创建一个空列表ls = [1, 2, 3] #创建一个列表ls = list(1, 2) #使用list()创建ls = list(s) # ls = [s[0], s[1], s[2] ..],s是一个序列
| 函数 |
描述 |
| ls1[i:j[:k]]=ls2 |
字符串替换,长度不一定要对应 |
| del ls[i:j[:k]] |
删除[i,j)字符串 |
| ls1.extend(ls2) |
ls1 = ls1 + ls2 |
| ls.append(x) |
ls末尾增加元素x |
| ls.clear() |
删除ls所有元素 |
| ls.coyp() |
返回一个新列表,生成所有元素 |
| ls.insert(i,x) |
在第i位置增加x |
| ls.pop() |
返回末尾元素并删除 |
| ls.remove(x) |
删除第一次出现x元素 |
| ls.sort() |
ls元素升序,ls被改变 |
| ls.reverse() |
ls元素逆置,ls被改变 |
2. 集合类型
v = {1, 2, 3} #用{}构成v = set(iterable) #iterable中元素构成集合,当然相同的元素会被过滤掉。
| 操作符 |
描述 |
| s - t或s.difference(T) |
返回一个新集合,元素在s中但是不在t中 |
| s -= t或s.difference_update(t) |
更新s,元素同s-t一样 |
| s&t或s.intersection(t) |
返回一个新集合,元素同时在s和t中 |
| s&=t或s.intersection_update(t) |
更新s,元素同s&t一样 |
| s^t或s.symmetric_difference(t) |
返回一个新集合,元素不是s和t的共同元素 |
| s^=t或s.symmetric_difference_update(t) |
更新s,元素同s^t一样 |
| s|t或s.union(t) |
返回一个新集合,包括s和t中的所有元素(当然相同的过滤掉) |
| s|=t或s.update(t) |
更新s。元素同s|t一样 |
| s<=t或s.issubset(t) |
如果s等于t或者是t的子集,返回True,否则返回False |
| s>=t或s.issuperset(t) |
如果s等于t或者是t的超集,返回True,否则返回False |
| 函数 |
描述 |
| s.add(x) |
如果x不在则添加 |
| s.clear() |
清空 |
| s.copy() |
返回一个s的拷贝 |
| s.pop() |
随机删除一个元素,s为空在报错 |
| s.discard(x) |
移除x,x不在不会报错 |
| s.remove(x) |
移除x,x不在报错 |
| s.isdisjoin(t) |
s和t没有相同元素返回True,否则返回False |
| len(s) |
返回集合s元素个数 |
| x in s |
如果x是s的元素,返回True,否则返回False |
| x not in s |
如果x不是s的元素,返回True,否则返回False |
- 特点:
1)元素可以增加或者删除
2)没有索引和位置的概念
3)元素必须是不可变的对象(也就是有hash值的类型)
4)不能使用{}创建空集合
- 优点:实现相同元素的过滤,成员关系测试
3. 映射类型
s = {'a':'A', 'b':2} #使用{}和<key>:<value>创建,注意这里的string类型的双(单)引号不能少s = dict(1='a', 2='b') #这里key的双(单)引号必须少,value的双(单)引号不能少keys = ['a', 'b']values = [1, 2]s = dict(zip(keys, values)) #使用zip打包
| 函数 |
描述 |
| len(d) |
返回键值对个数 |
| d.values |
返回所有值信息的列表 |
| d.keys |
返回所有键信息的列表 |
| d.items |
返回所有键值对元组的列表 |
| d.get(key, default=None) |
键存在返回键值,否则返回default |
| d.pop(key,default=None) |
键存在返回键值并删除键值对,否则返回默认值 |
| d.popitem() |
随机算则一个键值对以元组的形式返回,并且删除该键值对 |
| d1.update(d2) |
增减d2的键值对,会覆盖d1原有键值对 |
| d.clear() |
清空键值对 |
| del d[key]或del d |
删除d中键值为key的键值对或者删除整个字典 |
| in d |
如果键值在字典返回True,否则返回False |
- 特点
1)键必须为不可变对象,值可以为任意类型
2)可以用d[key]对值进行访问,key不存在会报错
3)用d[key]进行修改,key不存在则增添
4)键不能重复,值可以
5)字典是无序的
- 优点