python的元组、列表、字典数据类型是很python(there python is a adjective )的数据结构。这些结构都是经过足够优化后的,所以如果使用好的话,在某些area会有很大的益处。
元组
个人认为就像java的数组,python中的元组有以下特性:
任意对象的有序集合,这条没啥说的,数组的同性;通过偏移读取;一旦生成,不可改变;固定长度,支持嵌套 来例子吧:
python 代码
>>> (0, 'haha', (4j, 'y')) (0, 'haha', (4j, 'y')) >>> t = (1, 3, 'b') >>> t[2] 'b' >>> t[3] Traceback (most recent call last): File "#41>", line 1, in <module></module> t[3] IndexError : tuple index out of range >>> t[-1] 'b' >>> t[0:-1] (1, 3) >>> t * 2 (1, 3, 'b', 1, 3, 'b') >>> for x in t: PRint x, 1 3 b >>> 'b' in t True >>> q = t + ((3, 'abc')) >>> q (1, 3, 'b', 3, 'abc') >>> for x in (2, (3, 'a')): print x 2 (3, 'a') >>> len (q) 5 >>> len ((2, (3, 'abc'))) 2 >>> (1, 2, 3)[1] 2 >>> q[1] = 'd' Traceback (most recent call last): File "#57>", line 1, in <module></module> q[1] = 'd' TypeError : ' tuple ' object does not support item assignment >>> a = ('b', 'c', q) >>> 1 in a False >>> q in a True >>> a ('b', 'c', (1, 3, 'b', 3, 'abc')) >>> q='d' >>> a ('b', 'c', (1, 3, 'b', 3, 'abc'))
上面的例子足以说明大部分了,使用元组时最重要的一点是“一旦生成,就不可变了”。
列表
列表就像java里的collection,所具有的特性也要比元组更多,更灵活,其character总结如下:
任意对象的有序集合;可通过偏移存取,注意,列表中的元素都是可变的,这是不同于元组的;长度可变,支持嵌套;还有一些类似java的对象引用机制 由于列表的这些特性,使得列表在实际应用中被广泛使用,下面是一些例子。
1) 首先是基本用法
python 代码
>>> l = ['a', 'b', 'c'] >>> len (l) 3 >>> l + ['d'] ['a', 'b', 'c', 'd'] >>> l * 2 ['a', 'b', 'c', 'a', 'b', 'c'] >>> for x in l: print x, a b c
2) 索引和分片,赋值(单个元素赋值,分片赋值)
python 代码
>>> l = ['abc', ' def ', 'ghi', 123] >>> l[2] 'ghi' >>> l[-3] ' def ' >>> l[:3] ['abc', ' def ', 'ghi'] >>> l[1] = 'haha' >>> l ['abc', 'haha', 'ghi', 123] >>> l[1:] = ['apple', 'banana'] >>> l ['abc', 'apple', 'banana'] >>> l[2] = [123, 345, 456] >>> l ['abc', 'apple', [123, 345, 456]] >>> l[1:] = [123, 234, 345, 456, 567] >>> l ['abc', 123, 234, 345, 456, 567]
3) 添加、排序、删除操作
python 代码
>>> l = ['abc', ' def ', 'ghi', 123] >>> l. append (456) >>> l ['abc', ' def ', 'ghi', 123, 456] >>> l.sort() >>> l [123, 456, 'abc', ' def ', 'ghi'] >>> del l[0] >>> l [456, 'abc', ' def ', 'ghi'] >>> del l[2:] >>> l [456, 'abc']
4)一些有趣的用法(来自论坛 id—咖啡舞者 )
去掉列表中每个元素头尾的空格:
python 代码
() 元素固定