2013年5月4日 星期六

python: tuple使用範例

tuple是"不可變動(immutable)"的物件,具有索引的特性,支援切片運算。
但tuple所謂的"不可變動(immutable)",是指不得更改在tuple中每個索引所參考的物件,而不是指不可以更變所參考物件的值。

Tuple的內容不可變動,指的是不能變動每個索引所參考的物件,而不是指物件本身不能變動(這裡指可以更變所參考物件的值)。例如:

>>> t = ([1, 2], [3, 4])
>>> t
([1, 2], [3, 4])
>>> t[0] = [10, 20]

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> t[0][0] = 10
>>> t[0][1] = 20
>>> t
([10, 20], [3, 4])
>>>

上例中,打算指定Tuple索引0為新的串列物件是不可行的,但t[0][0]指的是改變索引0處的串列索引0的元素,同樣的t[0][1]指的是改變索引0處的串列索引1的元素,也就是相當於:

>>> t = ([1, 2], [3, 4])
>>> l = t[0]
>>> l[0] = 10
>>> l[1] = 20
>>> t
([10, 20], [3, 4])
>>>



>>> t = (1,2,3,4,5)
>>> t[0]
1
>>> t[1]
2
>>> t[2]
3
>>> t[3]
4
>>> t[4]
5
>>> t[-1]
5
>>> t[-2]
4
>>> t[-3]
3
>>> t[-4]
2
>>> t[-5]
1

>>> (1,2,3,4)[0]
1

>>> (1,2,3,4)[1]
2

所以說像以下這種程式碼,當recursive=0時,就會變成 'scp -t %s' ; 若recursive=1時,則為'scp -r -t %s'
scp_command = ('scp -t %s', 'scp -r -t %s')[recursive]


沒有留言:

張貼留言