由於與列表是近親關係,所以元組和列表在實際使用上是非常類似的,那麼到底元組與列表有什麼不同的地方呢?
建立元組以後每乙個元素不可更改,不可變序
建立和訪問乙個元組
元組大部分用小括號
>>
> tuple1 =(1
,2,3
,4,5
,6,7
,8,9
)>>
> tuple1(1
,2,3
,4,5
,6,7
,8,9
)>>
> tuple1[2]
3>>
> tuple1 [5:
](6,
7,8,
9)>>
> tuple1 [:5
](1,
2,3,
4,5)
>>
> tuple2 = tuple1
>>
> tuple2(1
,2,3
,4,5
,6,7
,8,9
)>>
> tuple1[1]
=2traceback (most recent call last)
: file ""
, line 1,in
tuple1[1]
=2typeerror:
'tuple'
object does not support item assignment
>>
>
type
(tuple1)
<
class
'tuple'
>
>>
> temp =(1
)>>
>
type
(temp)
<
class
'int'
>
>>
> temp =(1
,2,3
)>>
>
type
(temp)
<
class
'tuple'
>
>>
> temp =1,
2,3,
4>>
>
type
(temp)
<
class
'tuple'
>
>>
> temp =()
>>
>
type
(temp)
<
class
'tuple'
>
從上述例子可知,元組的辨識並不是依照括號來區分,而是逗號。如果只要建立乙個元素的元組,只需要加入逗號就可以
>>
> temp =1,
>>
>
type
(temp)
<
class
'tuple'
>
另外當元組出現乘號時候就表示重複操作符了,這個與列表是一致的
>>
>8*
(8,)
(8,8
,8,8
,8,8
,8,8
)
更新和刪除乙個元組儘管不能直接修改,可以以下操作
>>
> temp =
('hcia'
,'hcip'
,'hcie'
)>>
> temp =temp[:2
]+('ccie',)
+temp[2:
]>>
> temp
('hcia'
,'hcip'
,'ccie'
,'hcie'
)
之前的元組還是存在的,只是沒有標籤,過一會自動刪除
刪除整個元組
>>
>
del temp
>>
> temp
traceback (most recent call last)
: file ""
, line 1,in
temp
nameerror: name 'temp'
isnot defined
課後題:
本帖隱藏的內容
0. 請用一句話描述什麼是列表?再用一句話描述什麼是元組?
解:列表:乙個大倉庫,你可以隨時往裡邊新增和刪除任何東西。
元組:封閉的列表,一旦定義,就不可改變(不能新增、刪除或修改)
什麼情況下你需要使用元組而不是列表?
解:當我們希望內容不被輕易改寫的時候,我們使用元組(把權力關進牢籠)。
當我們需要頻繁修改資料,我們使用列表。
當元組和列表掉下水,你會救誰?
解:果是我,我會救列表,因為列表提供了比元組更豐富的內建方法,這相當大的提高了程式設計的靈活性。
回頭來看下元組,元組固然安全,但元組一定建立就無法修改(除非通過新建乙個元組來間接修改,但這就帶來了消耗),而我們人是經常搖擺不定的,所以元組只有在特殊的情況才用到,平時還是列表用的多。
請將左邊列表的內建方法與右邊的注釋連線,並圈出元組可以使用的方法
解:元組果然比較悲劇吧,僅有兩個方法元組可以使用,其他方法都不行
建立乙個元組,什麼情況下逗號和小括號必須同時存在,缺一不可?
解:
>>
> temp =
(『小甲魚』, 『黑夜』, 『迷途』, 『小布丁』)
# 如果我想在「黑夜」和「迷途」之間插入「怡靜」,我們應該:
>>
> temp = temp[:2
]+(『怡靜』,
)+ temp[2:
]
x, y, z = 1, 2, 3 請問x, y, z是元組嗎?
解:
>>
> x, y, z =1,
2,3>>
>
type
(x)<
class
'int'
>
>>
>
type
(y)<
class
'int'
>
>>
>
type
(z)<
class
'int'
>
>>
> h = x, y, z
>>
>
type
(h)<
class
'tuple'
>
請寫出以下情景中應該使用列表還是元組來儲存資料:解:
遊戲中角色的屬性:列表
你的身份證資訊:元組
論壇的會員:列表
團隊合作開發程式,傳遞給乙個你並不了解具體實現的函式的引數:元組
航天火箭各個元件的具體配置引數:元組
nasa系統中記錄已經發現的行星資料:列表
上節課我們通過課後作業的形式學習到了「列表推導式」,那請問如果我把中括號改為小括號,會不會得到「元組推導式」呢?
解:python3 木有「元組推導式」
那為什麼「>>> tuple1 = (x**2 for x in range(10))」不會報錯?
>>
> tuple1 =
(x**
2for x in
range(10
))>>
> tuple1
at 0x000001b4f069da98
>
>>
>
type
(tuple1)
<
class
'generator'
>
tuple1.next()1
tuple1.next()4
tuple1.next()9
tuple1.next()16
tuple1.next()25
tuple1.next()36
Python 元組(戴上了枷鎖的列表)
元組屬於不可變序列,元組是包含多個元素的型別,元素之間用逗號分割。例如 t1 123,456,hello 元組可以是空的,t2 元組包含乙個元素時 t3 123,元組外側可以使用括號,也可以不使用 可以使用tuple函式將其他序列轉換為元組 使用del刪除元組物件,不能刪除元組元素 1.元組中元素可...
FishC筆記 13 講 元組 戴上枷鎖的列表
本期內容詳解 由於和列表是近親關係,所以元組和列表在實際使用上是非常相似的。通過以下幾點進行討論學習 1 型別不可改變 2 可以對元組進行操作的操作符 拼接操作符 重複操作符 成員操作符 in not in 關係操作符 邏輯操作符 and or 3 元組的建立和訪問 逗號是關鍵,建立空元組可寫成te...
4 元組tuple 戴上了枷鎖的列表
簡單介紹 由於和列表是近親關係,所以元祖和列表在實際使用上是十分相似的。我們這節主要通過討論元祖和列表有什麼不同來學習元祖,醬紫大家就不會覺得老是重複相同的內容。我們主要從以下幾個點來討論學習 1 元組的內容是不能被修改的 2 建立和訪問乙個元組 注意 逗號起到決定性作用,而不是小括弧 t1 100...