初看起来,除了语法结构上的区别
tuple
tup1 = (‘physics’, ‘chemistry’, 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = “a”, “b”, “c”, “d”;
list
list1 = [‘physics’, ‘chemistry’, 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = [“a”, “b”, “c”, “d”];
tuple好像只是不可变的list. 但是如果把python的这种语法特性放到特定的语义当中,两者的差别便体现出来了.
例如:
>>>import time
>>>time.localtime()
Local current time : time.struct_time(tm_year=2013, tm_mon=7,
tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)
可以看到上面的time.localtime()
方法输出的结果是一个tuple,它是不可变的.而它要表达的意思则是当前时间,对于一个具体的时刻来说,每一个数值代表的意思也是一一对应不变得,这跟tuple的语法特点也是相对应的.
类似的情况还有试用sql查找输出的结果result
也是tuple,而sql结果的tuple中的每个数值,跟数据库中的字段也是一一对应的.
相反,sql结果集resultSet
中每一个成员代表一个搜索结果,他们相互的关系是对等的,是可以相互替换的,这也是python中给list中的成员的定位.
参考文章: http://news.e-scribe.com/397