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