序列之元組詳解
阿新 • • 發佈:2018-11-24
訪問方式 對象 出現 cal stop mod 存在 51cto *args 元組是序列一種,與列表類似,但是不能修改,下面我們詳解介紹下元組:
tv[::-1]= (‘長虹‘, ‘康佳‘, ‘海信‘, ‘創維‘, ‘小米‘)
tv[::2]= (‘小米‘, ‘海信‘, ‘長虹‘)
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[::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。
序列之元組詳解