Python的容器数据类型
Sequence序列对象
lists列表, 元组tuples, and range
通用序列操作:
- item in或者not in sequence:判断item在或者者不在序列中
- +或者符号:将两个序列相加或者把一个序列内容复制n倍, 注意可能得到的是同一对象的多个引用
- s[n]:第n个元素,超出范围IndexError
- s[i:j]:第i到j个元素的切片,包含第i个不包含第j个,i为负数相当于0,j超范围相当于最多
- s[i:j:k]:第i到j个元素间隔k个取出
- len(s):序列的元素总数
- min(s)和max(s):按照排序的最小或者最大一项
- s.index(x,i,j):ij可选。序列中x的位置,i和j限定搜索范围,返回x的位置或者ValueError
- s.count(x):s中包含x的重复数量,找不到返回0
- for x in s:循环解决序列中的每一项
- s[i:j] = t:将序列的i到j项替换为t,假如t为序列则直接元素对应替换,无论t数量多少;假如t为非序列,则i到j变为一个t对象
- s[i:j]=[]:相当于删除i到j项(不含j),等同del s[i:j]
- s.append(x):将x增加到s,等同s[len(s):len(s)]=[x]
- s.clear():清除所有元素
- s.copy():复制整个序列,相当于s[:]
- s.extend(t) or s += t:合并两个序列,相当于s[len(s):len(s)] = t
- s.insert(i, x):将x插入到i位置,相当于s[i:i] = [x]
- s.pop(i):获取第i项并从序列中删除它,假如i省略则指向最后一个
- s.remove(x):移除x项,假如不存在则ValueError
- s.reverse():翻转顺序
list列表
- 构造方法:[],[1,2,3],[for i in range(10)],list(‘abc’),list((1,2,3))
>>> sorted((3,2,1))[1, 2, 3]>>> list((1,2,3))[1, 2, 3]- 负数索引从 list 的尾部开始向前计数来存取元素。任何一个非空的 list 最后一个元素总是 li[-1]
- sorted(list, key=None, reverse=False)为列表排序,生成新排序列表
>>> li=[{'a':22},{'a':12},{'a':100}]>>> sorted(li,key=lambda x:x['a'])[{'a': 12}, {'a': 22}, {'a': 100}]- list.sort()将list排序,list必需为基本对象,不能是容器对象;而sorted则可以利用key对更复杂对象排序。
Tuples元组
- 构造方法:(a,b),(a,),(a,b,c),tuple([1,2,3])
- 元组一旦创立将不可修改
- Tuple没有没有append或者extend方法,没有 remove 或者 pop 方法、没有 index 方法。
- 可以使用 in 来查看一个元素能否存在于 tuple 中。
range
- 构造方法:range(start,stop,step),range(10),range(5,50,5);step不能为0
>>> list(range(0, -10, -1))[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]>>> list(range(0))[]>>> list(range(1, 0))[]- range无论数字多少,总是占用同样小的内存。
- range可以比较
>>> range(0, 3, 2) == range(0, 4, 2)Truerange存在.start,.stop,.step属性
集合类型set
- 集合支持x in set, len(set), and for x in set等语法
- 集合中没有重复元素
- isdisjoint能否完全无交集
>>> a={1,2,3,4}>>> b={3,4,5,6}>>> a.isdisjoint(b)False>>> c={5,6}>>> a.isdisjoint(c)True- issubset(other)能否子集;相当于set <= other
- issuperset(other)能否超集;相当于set >= other
- union(other)与other合并;
- intersection(*others)交集
- difference(*others)在此集合但不在other集合
- symmetric_difference(others)不在交集但在此集合或者other集合
- copy()复制集合
- update(*others)将others增加进来
- intersection_update(*others)取交集
- add(elem),remove(elem)增加和移除元素,假如不存在则抛出异常KeyError
- discard(elem)删除元素,假如不存在不报错
- pop()任意去掉一个元素
- clear()清空
字典dict
- Dictionary 是 Python 的内置数据类型之一, 它定义了键和值之间一对一的关系。
- 每一个元素都是一个 key-value 对, 整个元素集合用大括号括起来
- 您可以通过 key 来引用其值, 但是不能通过值获取 key
- 在一个 dictionary 中不能有重复的 key。给一个存在的 key 赋值会覆盖原有的值
- dictionary 的 key 是大小写敏感的
- Dictionary 的值可以是任意数据类型, 包括字符串, 整数, 对象, 甚至其它的 dictionary。
- 在单个 dictionary 里, dictionary 的值并不需要全都是同一数据类型, 可以根据需要混用和匹配。
- 构建方法:{‘a’:11,’b’:22},{11:’22’,22:’bb’},键只能是索引数字(正负数和小数都可)或者字符串
>>> a = dict(one=1, two=2, three=3)>>> b = {'one': 1, 'two': 2, 'three': 3}>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))>>> d = dict([('two', 2), ('one', 1), ('three', 3)])>>> e = dict({'three': 3, 'one': 1, 'two': 2})>>> a == b == c == d == eTrue- len(d)字典属性数量
- del d[key]删除key,假如不存在则KeyError
- clear(),copy()
- fromkeys(seq[, value])用seq序列做键值key,所有键都等于value
- get(key)获取值,但不出错
- items(),keys(),values()返回一个可枚举的对象
>>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}>>> keys = dishes.keys()>>> values = dishes.values()>>> # iteration>>> n = 0>>> for val in values:... n += val>>> print(n)504>>> # keys and values are iterated over in the same order (insertion order)>>> list(keys)['eggs', 'sausage', 'bacon', 'spam']>>> list(values)[2, 1, 1, 500]>>> # view objects are dynamic and reflect dict changes>>> del dishes['eggs']>>> del dishes['sausage']>>> list(keys)['bacon', 'spam']>>> # set operations>>> keys & {'eggs', 'bacon', 'salad'}{'bacon'}>>> keys ^ {'sausage', 'juice'}{'juice', 'sausage', 'bacon', 'spam'}- pop(key)删除一个属性,不存在的话报错;popitem()删除最后一个属性
- setdefault(key[, default])设置默认值,不存在的话自动增加
- update(other)升级属性值,不存在的话自动增加
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Python的容器数据类型
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Python的容器数据类型