1. 程式人生 > >序列之元組詳解

序列之元組詳解

訪問方式 對象 出現 cal stop mod 存在 51cto *args

元組是序列一種,與列表類似,但是不能修改,下面我們詳解介紹下元組:

1 列表近親:元組

1.1 元組定義與訪問方式:

元組與列表類似,元組語法:(ele1, ele2, ele3);具體如下:

#定義元組1,與列表類似
a = (1,2,3)
print(a)
#定義元組2
b = ‘a‘, ‘b‘, ‘c‘
print(b)
#元素訪問:
print(a[0], b[1])

1.2 tuple方法使用:

tuple可以將可叠代對象轉成元組,相關操作如下:

#range對象轉元組
print(tuple(range(10)))
#字符串轉列表
print(tuple(‘helloworld‘))
#列表轉元組
print(tuple([‘C++‘, ‘Java‘, ‘Python‘]))

1.3 元組不可修改:

嘗試修改元組:

#小明成績單
xiaoming = (59, 80)
#嘗試修改下:
xiaoming[0] = 60

輸出結果:

TypeError                                 Traceback (most recent call last)
<ipython-input-1-1ba0d7da8615> in <module>
      2 xiaoming = (59, 80)
      3 #嘗試修改下:
----> 4 xiaoming[0] = 60

TypeError: ‘tuple‘ object does not support item assignment

列表中的元素是不能修改的。

2.元組常規操作:

2.1 切片操作:

tv = (‘小米‘, ‘創維‘, ‘海信‘,‘康佳‘,‘長虹‘)
print(‘tv=‘,tv)
#切片操作
print(‘tv[:2]=‘, tv[:2])
#掐頭去尾
print(‘tv[0:-1]=‘, tv[0:-1])
#反序
print(‘tv[::-1]=‘, tv[::-1])
#隔一個取一個
print(‘tv[::2]=‘, tv[::2])

輸出結果如下:
tv= (‘小米‘, ‘創維‘, ‘海信‘, ‘康佳‘, ‘長虹‘)
tv[:2]= (‘小米‘, ‘創維‘)
tv[0:-1]= (‘小米‘, ‘創維‘, ‘海信‘, ‘康佳‘)

tv[::-1]= (‘長虹‘, ‘康佳‘, ‘海信‘, ‘創維‘, ‘小米‘)
tv[::2]= (‘小米‘, ‘海信‘, ‘長虹‘)

2.2 元組遍歷:

tvs = (‘小米‘, ‘創維‘, ‘海信‘,‘康佳‘,‘長虹‘)
for tv in tvs:
    print(tv)

輸出結果:

小米
創維
海信
康佳
長虹

2.3 元組常用函數:

#定義元組
t = (90, 30, 40, 80, 100)
#長度:
print(‘len t:‘, len(t))
#最大值:
print(‘max value:‘, max(t))
#最小值:
print(‘min value:‘, min(t))
#平均值:
print(‘ave value:‘, sum(t)/len(t))

2.4 元組相關方法:

元組是不可變數據結構,只有兩個方法,我們來看下:

方法 說明
T.count(value) 統計元素在元組中數量
T.index(value, [start, [stop]]) 返回元素第一次出現索引,不存在報異常

相關使用如下:

t = (90, 30, 40, 80, 100)
#90出現次數
print(‘{}.count({})={}‘.format(‘t‘, 90, t.count(90)))
#90在元組中索引
print(‘{}.index({})={}‘.format(‘t‘, 90, t.index(90)))
#0在元組中索引
print(‘{}.index({})={}‘.format(‘t‘, 0, t.index(0)))

運行結果:

t.count(90)=1
t.index(90)=0
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-19-cc15ec2f620f> in <module>
      5 print(‘{}.index({})={}‘.format(‘t‘, 90, t.index(90)))
      6 #0在元組中索引
----> 7 print(‘{}.index({})={}‘.format(‘t‘, 0, t.index(0)))

ValueError: tuple.index(x): x not in tuple

註意最後一場。

3.元組使用場景:

3.1 函數返回多個值:

定義一個函數,參數為兩個數字,返回兩個數字和,積;
分析:邏輯上實現不困難,如何返回兩個值?
我們定義一個函數,返回一個固定值:

#定義函數
def func():
    return 0
print(‘func()=‘, func())

輸出結果:func()= 0
如何返回兩個值,在後面價格書試試,代碼實現如下:

#定義函數
def func():
    return 0,1
print(‘func()=‘, func())

輸出結果:func()= (0, 1)
可以看到,返回值為一個元組,然後我們來實現返回和與積的函數,代碼實現:

#定義函數
def func(a, b):
    return a+b, a*b
print(‘func({}, {})={}‘.format(2,5, func(2, 5)))

輸出結果:func(2, 5)=(7, 10)

如何接受這兩個值:還記得大明湖畔的多元賦值麽?

m = 2,3
#m什麽類型?
print(m)
#x,y是什麽值?
x,y = m
print(x, y)

輸出結果:

(2, 3)
2 3

希望大家記得這些方法使用。

3.2 函數傳多個不定數量參數,例如sum函數?

sum函數,可以傳入多個數字,這個實現其實也和元組有關,
我麽來演示個例子:

#*args:可變長非關鍵字
def mysum(a,b, *args):
    #查看args類型
    print(args, type(args))
    return a+b+sum(args)
print(mysum(1,2))
print(mysum(1,2,3))
print(mysum(1,2,3, 4))

我們在這時只是展示他的用法,後面講函數時候我們在詳解解釋;

到這裏元組基本使用就介紹完了,希望對大家理解有所幫。
另外歡迎大家關註老貓的專欄:
http://blog.51cto.com/cloumn/detail/34。

序列之元組詳解