简单总结Python中序列与字典的相同和不同之处
|
共同点: 核心类型与非核心类型 2.边界检查都不允许超越索引边界 >>> a = 'dave' >>> a[3] 'e' >>> a[4] Traceback (most recent call last): File "<stdin>",line 1,in <module> IndexError: string index out of range 3.索引方法都使用[ ]
>>> a = 'dave'
>>> print a[0]
d
>>> a = ['d','a','v','e']
>>> print a[0]
d
>>> a = ('d','e')
>>> print a[0]
d
4.大部分都支持迭代协议
1.有序性
>>> s = 'dave' >>> id(s) 140105068006304 >>> s = 'python' + s[1:] >>> s 'pythonave' >>> id(s) 140105067997536 第一行的s指向内存空间140105068006304,存储了字符串'dave' 3.序列操作 >>> seq = 'dave' >>> print seq[1:] ave >>> seq = ['d','e'] >>> print seq[1:] ['a','e']
>>> seq = ('d','e')
>>> print seq[1:]
('a','e')
4.列表解析表达式 表达式中支持序列(字符串,元组),也支持映射(字典) >>> str = [ a * 2 for a in 'dave' ] >>> print str ['dd','aa','vv','ee'] >>> L1 = [1,2,3] >>> L2 = [4,5,6] >>> L3 = [(a+b) for (a,b) in zip(L1,L2)] >>> print L3 [5,7,9] >>> tup = (1,3) >>> tups = [ a * 2 for a in tup] >>> print tups [2,4,6]
>>> dic = {'a':'dave','b':'emily'}
>>> dics = [ i *2 for i in dic.items()]
>>> print dics
[('a','dave','dave'),('b','emily','b','emily')]
字典的items(),keys(),values()方法都是返回的列表,这里的for i in a写for i ina.keys(),效果等同。
>>> dic = {'a':'dave','b':'emily'}
>>> dicts = [ i * 2 for i in dic]
>>> print dicts
['aa','bb'] 5.嵌套 除了字符串外,字典可以相互多层嵌套 >>> a = [1,3] >>> tup = (4,a) >>> print tup[2] [1,3] >>> a[0] = 'x' >>> print tup[2] ['x',3] a指向一个列表,列表具有可变性,所以b[0]='x'的操作后,对元组的索引可以看到变化 >>> a = '123' >>> tup = (4,a) >>> print tup[2] 123 >>> a = 'xxx' >>> print tup[2] 123 a指向一个字符串,字符串具有不可变性,所以a = 'xxx'的操作后,a这个指针本身就改变了,重新指向另一段内存空间,而tup元组中记忆的内存地址所指空间并没有变,还是字符串'123'
(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
