Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
按照代码学习:
# -*- coding: utf-8 -*-
if __name__ == '__main__':
classmate = ['Michael', 'Jim', 'Kobe']
print 'classmate为:', classmate
# 用len()函数可以获得list元素的个数:
print 'classmate的长度是', len(classmate)
# 用索引来访问list中每一个位置的元素
print 'classmate的第一个元素是:', classmate[0]
# 如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素:
print 'classmate的最后一个元素是:', classmate[-1]
# list是一个可变的有序表,所以,可以往list中追加元素到末尾:
classmate.append('Allen')
print 'classmate添加了一个元素后为:', classmate
# 也可以把元素插入到指定的位置,比如索引号为1的位置:
classmate.insert(1, 'Green')
print 'classmate添加了一个元素后为:', classmate
# 要删除指定位置的元素,用pop(i)方法;要删除list末尾的元素,用pop()方法:
classmate.pop(4)
print 'classmate删除了一个元素后为:', classmate
# 要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:
classmate[0]='Sara'
print 'classmate替换了一个元素后为:', classmate
# list里面的元素的数据类型也可以不同, 而且可以是list,比如:
list= ['string', 123, True, ['internalList',123] ]
print 'list:', list
打印输出结果为:
classmate为: ['Michael', 'Jim', 'Kobe']
classmate的长度是 3
classmate的第一个元素是: Michael
classmate的最后一个元素是: Kobe
classmate添加了一个元素后为: ['Michael', 'Jim', 'Kobe', 'Allen']
classmate添加了一个元素后为: ['Michael', 'Green', 'Jim', 'Kobe', 'Allen']
classmate删除了一个元素后为: ['Michael', 'Green', 'Jim', 'Kobe']
classmate替换了一个元素后为: ['Sara', 'Green', 'Jim', 'Kobe']
list: ['string', 123, True, ['internalList', 123]]
Tuple:
tuple一旦定义就不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0],classmates[-1],但不能赋值成另外的元素。
不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来
Demo:
# -*- coding: utf-8 -*-
if __name__ == '__main__':
# 另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:
classmate = ('Michael', 'Kobe', 'Allen')
print classmate[1]
classmate[1]='test'#报错, tuple元素不支持赋值: TypeError: 'tuple' object does not support item assignment
# 只有1个元素的tuple定义时必须加一个逗号,来消除歧义:
tuple=(1,)
notTuple=(1)
print type(tuple)
print type(notTuple)
# 但Tuple里面的可变元素的值可以改变, 例如包含list的tuple:
t= ('string', 123, ['item1', 'item2'])
print '改变之前的tuple: ',t
t[2][0]='newItem1'
print '改变之后的tuple: ',t