首页 > 代码库 > Python 序列容器
Python 序列容器
Python中sequence主要包含存储单个元素序列和两个元素对的序列,str就是一个字符容器。
单元素序列主要有以下类型:
bytearray: 字节数组,通过built-in 函数bytearray()创建
xrange:由函数xrange(n)/xrange(start, stop, step)创建,但不支持容器上的切片,连接,复制, in/not in 判断,min/max取值操作, xrange是
immutable sequence, xrange对象大小固定,与其代表范围大小无关,xrange主要用于循环,比range效率稍高,xrange上的操作只支持indexing, iteration, len
list:链表mutable, [a,b,c],相当于其他语言中的数组链表集合体,因此也就部分LinkList和ArrayList
tuple: immutable list,非空tuple括号可有可无a,b,c 或(a,b,c) , empty tuple必须有括号(), single item tuple 逗号必不可少 a, 或(a,);不能对tuple的某个元素赋值,但tuple中的元素可以是mutable
set: mutable unordered hashtable, 支持数学操作并集合集等,因为无序,所以不支持indexing,slicing等顺序性操作 飞空{a,b,c} 空set(),支持issubset/union/intersection/difference
frozenset: immutable unordered hashtable
双元素序列则主要是关联数组:
dict: hash_table, comma-separated list of key-value: {a:b, c:d} , empty dic: dic(),主要有以下方法:
iter(d) is short for iterkeys()
get(key)/has_key(key)/pop(key)/popitem()
items(): return a copy of the dictionary‘s list of (key, value) pairs
keys(): return a list of keys
sorted(keys()): return a sorted list of keys
dictview: dict.viewkeys()/viewvalues()/viewitems() 返回,是dict的view,即dict变了,view也会变
Sequence主要操作就是增删改查,以下查操作优先级依次递增,s、t类型相同,n、i、j 是整形
Operation | Result | Notes |
---|---|---|
x in s | True if an item of s is equal to x, else False | (1) |
x not in s | False if an item of s is equal to x, else True | (1) |
s + t | the concatenation of s and t | (6) |
s * n, n * s | n shallow copies of s concatenated | (2) |
s[i] | ith item of s, origin 0 | (3) |
s[i:j] | slice of s from i to j | (3)(4) |
s[i:j:k] | slice of s from i to j with step k | (3)(5) |
len(s) | length of s | |
min(s) | smallest item of s | |
max(s) | largest item of s | |
s.index(x) | index of the first occurrence of x in s | |
s.count(x) | total number of occurrences of x in s |
容器之间也可以进行比较,依次比较容器中的每一个元素
如果s是str/unicode, in/not in 判断x是否是s的字串
n<0时s*n = s*0 返回类型与s相同的空容器
如果i/j < 0, s[i/j] 的位置为len(s) + i/j, 但s[0]=s[-0]
i,j都可以省略,省略i则i=0, 省略j 则j=len(s), 如果i/j>len(s), 则取len(s), 如果i>=j, 则slice返回空
Sequence按可变性又可分为mutable和immutable:
immutable sequence: string, xrange, tuple, 一旦创建,不能再改变
mutable sequence: bytearray, list 可以添加元素或改变某个位置的元素,可变容器支持以下操作
Operation | Result | Notes |
---|---|---|
s[i] = x | item i of s is replaced by x | |
s[i:j] = t | slice of s from i to j is replaced by the contents of the iterable t | |
del s[i:j] | same as s[i:j] = [] | |
s[i:j:k] = t | the elements of s[i:j:k] are replaced by those of t | (1) |
del s[i:j:k] | removes the elements of s[i:j:k] from the list | |
s.append(x) | same as s[len(s):len(s)] = [x] | (2) |
s.extend(x) | same as s[len(s):len(s)] = x | (3) |
s.count(x) | return number of i‘s for which s[i] == x | |
s.index(x[, i[, j]]) | return smallest k such that s[k] == x and i <= k < j | (4) |
s.insert(i, x) | same as s[i:i] = [x] | (5) |
s.pop([i]) | same as x = s[i]; del s[i]; return x | (6) |
s.remove(x) | same as del s[s.index(x)] | (4) |
s.reverse() | reverses the items of s in place | (7) |
s.sort([cmp[, key[, reverse]]]) | sort the items of s in place | (7)(8)(9)(10) |
t的长度需与slice长度相等
x可以为任何iterable 类型
Sequence遍历:
for x in s:...
enumerate(): retrievethe position index and corresponding value at the same time
zip(): loop over two or more sequences at the same time
iteritems(): retrieve the key and corresponding value at the same time while looping through dictionaries
遍历集合时若需对集合进行修改,最好遍历集合的副本,slice[:]很容易获取集合的copy
Python 序列容器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。