元組

元組

元組(tuple)是關係資料庫中的基本概念,關係是一張表,表中的每行(即資料庫中的每條記錄)就是一個元組,每列就是一個屬性。在二維表裡,元組也稱為行。

定義


元組
元組
笛卡爾積中每一個元素(d1,d2,…,dn),叫作一個n元組(n-tuple)或簡稱元組。當關係是一張表,二 維表中的行表中的每行(即資料庫中的每條記錄)就是一個元組,每列就是一個屬性。在二維表里,元組也稱為記錄。

python數據


元組和列表十分類似,只不過元組和字元串一樣是不可變的,即你不能修改元組。元組通過圓括弧中用逗號分割的項目定義。元組通常用在使語句或用戶定義的函數能夠安全地採用一組值的時候,即被使用的元組的值不會改變。
1、Python中元組的書面形式和規範:
tuplename=(tupleitem1,tupleitem2,tupleitem3,tupleitem4)
tuplename=tupleitem1,tupleitem2,tupleitem3,tupleitem4
注意:定義元組的是逗號,而非括弧。
zoo = ('wolf', 'elephant', 'penguin')
print 'Number of animals in the zoo is', len(zoo)
new_zoo = ('monkey', 'dolphin', zoo)
print 'Number of animals in the new zoo is', len(new_zoo)
print 'All animals in new zoo are', new_zoo
print 'Animals brought from old zoo are', new_zoo[2]
print 'Last animal brought from old zoo is', new_zoo[2][2]
一個空的元組由一對空的圓括弧組成,如 myempty = ()。然而,含有單個元素的元組必須在第一個(唯一一個)項目後跟一個逗號,這樣Python才能區分元組和表達式中一個帶圓括弧的對象。

容器對象


元組在Scala語言中是一個非常有用的容器對象。與列表一樣,元組也是不可變的;但是與列表不同,元組可以包含不同類型的元素。例如列表只能寫成List[Int]或者List[String],但是元組可以同時擁有Int和String。元組適用場景很多,比方說,如果需要在方法里返回多個對象。Java里的做法是創建JavaBean已包含多個返回值,Scala里可以僅返回元組。而且做起來也很簡單;只要把元組實例化需要的對象放在括弧里,並用逗號分隔即可。元組實例化之後,可以用點號、下劃線和基於1的索引訪問其中的元素。如:
var scalachina =(2010,"Scala中文 ")
println(scalachina._1)
println(scalachina._2)
運行這段代碼的結果:
2010
Scala中文

區別


元組與列表相同,也是容器對象,可以存儲不同類型的內容。元組與列表有兩個不同點。第一個不同點是元組的聲明使用小括弧,而列表使用方括弧,當聲明只有一個元素的元組時,需要在這個元素的後面添加英文逗號;第二個不同點是元組聲明和賦值后,不能像列表一樣添加、刪除和修改元素,也就是說元組在程序運行過程中不能被修改。
用於列表的排序、替換、添加等方法也不適用於元組,適用於元組的主要運算有元組的合併、遍歷、求元組的最大值和最小值等操作方法。

用法


以Python為例。
元組也是一種序列。元組使用括弧“0”來界定;元組中各元素之間用逗號隔開。元組不支持修改或刪除其所包含的元素。如果要修改,則可以使用list函數把它轉化成列表,然後在列表上進行修改創建元組的方法有三種:
1、使用括弧“0”來創建,例如,a=(1,2,3);
2、使用逗號來創建,例如,b=2,4;
3、使用 tuple0函數把其他種類的序列轉化為元組,例如,c= tuple(“Good!”)。
元組是一種序列,它支持序列的基本操作,包括索引、切片、序列加、序列乘、in、len()、max()、min()。元組不可修改,指的是元組中每個元素的指向永遠不變。例如,元組a=('Tim',201607,['Python',71]),其中a[1]=201607是整型數據,元組a不能修改a[1];a[2]=[ 'Python',71]是列表,元組a可以修改a[2][1]。元組a的第三個元素為列表,列表的內容是允許改變的,它的內存位置並沒有變化。

訪問組元

元組可以使用下標索引來訪問元組中的值,如下實例:
1
2
3
#!/usr/bin/pythontup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )print "tup1[0]: ", tup1[0]
print "tup2[1:5]: ", tup2[1:5]
以上實例輸出結果:
1tup1[0]: physicstup2[1:5]: (2, 3, 4, 5)

修改元組

元組中的元素值是不允許修改的,但我們可以對元組進行連接組合,如下實例:
1
2
3
4
5
6
#!/usr/bin/python# 
-*- coding: UTF-8 -*-tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')# 以下修改元組元素操作是非法的。
# tup1[0] = 100# 創建一個新的元組
tup3 = tup1 + tup2
print tup3
以上實例輸出結果:
1(12, 34.56, 'abc', 'xyz')

刪除元組

元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組,如下實例:
1
2
3
4
#!/usr/bin/pythontup = ('physics', 'chemistry', 1997, 2000)print tup
del tup
print "After deleting tup : "
print tup
以上實例元組被刪除后,輸出變數會有異常信息,輸出如下所示:
1
2
3
4
('physics', 'chemistry', 1997, 2000)
After deleting tup :
Traceback (most recent call last):File "test.py", line 9, in  print tup
NameError: name 'tup' is not defined