可类似的与C语言中的数组对比一下
1、list
#!/usr/bin/env python#-*- coding:utf-8 -*-# list:一种内置的数据类型,列表,有序的集合,list里面的元素的数据类型可以不同classmates = [u'张三',2,'Cc']print classmates # 打印的是该变量指向内存地址上的值?# len()函数可以获取list的元素个数print len(classmates)# 可以利用索引访问每一个位置的元素,索引号是从0开始的print classmates[0]print classmates[1]print classmates[2]# print classmates[3] # 越界报如下错误:IndexError: list index out of range# ★为防止越界,最大索引应设置为len(classmates)-1★# 获取元素值还可以用-n,代表倒数第n个元素,同样注意★越界★的问题print classmates[-1]print classmates[-2]print classmates[-3]# print classmates[-4]# list作为可变的有序列表,可以添加、删除,也可以替换元素classmates.append('Ee') # 往list中追加元素到末尾print classmatesclassmates.insert(3,'Dd') # 把元素插入到指定的位置,比如索引号为3的位置print classmatesclassmates.pop() # 删除list末尾的元素print classmatesclassmates.pop(0) # 删除指定位置的元素,用pop(i)方法,其中i是索引位置:print classmatesclassmates[0]=2.2 # 替换就是直接将目标值赋到对应的索引位置print classmates# list元素也可以是另一个lists = ['python', 'java', ['asp', 'php'], 'scheme'] #注意:此时s只有4个元素,其中s[2]是一个list类型print sprint s[2][0],s[2][1]print len(s)# 可将s拆分如下p = ['asp', 'php']s = ['python', 'java', p, 'scheme']print sprint s[2][0],s[2][1]print len(s)# ★类似的可看成二维数组,推广到三维、四维。。。# 如果list中一个元素也没有,就是一个空list,长度为0l=[]print lprint len(l)
运行效果:
2、tuple
#!/usr/bin/env python#-*- coding:utf-8 -*-# tuple :另一种内置的数据类型,元组,有序的集合,tuple里的各元素数据类型也可以不同# tuple与list的区别:1:list ==>[],tuple ==>() 2:tuple一旦初始化,其各元素的"指向"不能变化,故不存在增加、删除、替换操作# ★因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple★t = (u'李四','B2','C3')print t# 同样可以使用len()获取tuple的长度,即元素个数print len(t)# 同样可以利用下标索引值访问元素,索引号是从0开始的print t[0]print t[1]print t[2]# ★越界★,★为防止越界,最大索引应设置为len(classmates)-1★# 同样的,获取元素值还可以用-n,代表倒数第n个元素,同时注意★越界★的问题print t[-1]print t[-2]print t[-3]# 因为tuple的各元素指向不能改变,所以不存在增加、删除、替换操作# t[0]=u'王五' # 该行提示报错# 同样,tuple的元素也可以是另一个tuplett = ('A1',t)print ttprint tt[1][0], tt[1][1], tt[1][2]print len(tt)# ★类似的可看成二维数组,推广到三维、四维。。。# ★★★★★★★★★★★★★★★★tuple的陷阱★★★★★★★★★★★★★★★★★★★★★★# 1:当定义一个tuple的时候,tuple的元素就必须被确定下来t1 = (1,2) print t1# 2:定义一个空的tuple,可以写成()t2 = ()print t2# 3:定义只有一个元素的tuple时,必须加一个逗号,以消除歧义t3 = ('a')print t3 # 因为()既可以表示tuple类型的变量也可以表示小括号,所以造成了歧义 # 而Python规定,这种情况下,按小括号进行计算,于是造成这种很隐晦的错误t3 = ('a',) # 此时,重新定义了t3print t3 # Python在显示只有1个元素的tuple时,也会加一个逗号,以免误解成数学计算意义上的括号# 4:"看似可变的"tuplet4 = ('AAaa','BBbb',['CCcc',1])print t4print t4[2][0],t4[2][1]t4[2][0] = 'DDdd't4[2][1] = 2print t4print t4[2][0],t4[2][1] # 此时,只是list变量变了,tuple的指向并没有变,仍指向该list # tuple所谓的“不变”是说,tuple的每个元素,指向永远不变,但是指向的元素是允许变化的# 5:理解了“指向不变”后,那么要创建一个内容也不变的tuple,就必须保证tuple的每一个元素本身也不能变
运行效果: