简单总结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'
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |