python元組的基本用法及生成器物件

2021-10-03 18:05:37 字數 3667 閱讀 2547

元組不可以被改變,但是可以給元組名賦值,讓它指向新的元組

>>

>x=(1

,2,3

)>>

> x(1

,2,3

)>>

> x=(4

,5,6

)>>

> x(4

,5,6

)>>

> x[0]

=4traceback (most recent call last)

: file ""

, line 1,in

typeerror:

'tuple'

object does not support item assignment

可以刪除整個元組

>>

> x=(1

,2,3

)>>

> x(1

,2,3

)>>

>

del x

>>

> x

traceback (most recent call last)

: file ""

, line 1,in

nameerror: name 'x'

isnot defined

元組支援切片操作,但是不支援原地操作,即切片不能出現在賦值號的左邊

>>

> x=(1

,2,3

)>>

> y=x[0:

2]>>

> y(1

,2)>>

> x[0:

2]=(

4,5)

traceback (most recent call last)

: file ""

, line 1,in

typeerror:

'tuple'

object does not support item assignment

4.列表和元組的不同點:

(1)列表能進行修改,因此可以使得資料更安全。

python對元組的內部做了大量的優化,所以元組的訪問速度要比列表快。

基於以上兩點原因,我們在不需要改變資料的情況下,僅僅是做一些遍歷等操作時,我們一般選擇元組而不是列表。

(2)元組可以作為字典的鍵值、集合的元組,但是列表不可以,因為python要求字典的鍵值和集合的元素始終可雜湊

>>

> x=(1

,2,3

)>>

> y=

#元組作為集合的元素

>>

> y

>>

> z=

#元組作為字典的鍵值

>>

> z

>>

>x=[1

,2,3

]>>

> y=

#列表作為集合的元素

traceback (most recent call last)

: file ""

, line 1,in

typeerror: unhashable type

:'list'

>>

> z=

#列表作為字典的鍵值

traceback (most recent call last)

: file ""

, line 1,in

typeerror: unhashable type

:'list'

生成器推導式

(1)生成器推導式的返回值是乙個生成器物件

>>

> x=

(i for i in

range(10

))>>

> x

at 0x000002c2c6b43ec8

>

(2)這與列表推導式有很大不同,列表推導式的結果是列表

>>

> x =

[i for i in

range(10

)]>>

> x[0

,1,2

,3,4

,5,6

,7,8

,9]

(3)使用生成器物件的元素時,可以將生成器物件轉換成列表或元組

>>

> x =

(i for i in

range(10

))>>

> y =

tuple

(x)>>

> y(0

,1,2

,3,4

,5,6

,7,8

,9)>>

> z =

tuple

(x)>>

> z()

>>

> w =

list

(x)>>

> w

**中z元組是個空元組,w是個空列表,這是因為之前得到y元組的過程中已經對生成器物件x進行了遍歷的訪問,訪問乙個刪除乙個,所以後面想再使用x時,x已經空了

(4)還可以使用生成器物件的_ next () _ 方法或者python內建函式next()來對生成器物件進行遍歷(下面將x轉換成的列表說明了生成器物件訪問過的元素會被刪除)

>>

> x =

(i for i in

range(10

))>>

> x.__next__()0

>>

> x.__next__()1

>>

> x.__next__()2

>>

>

next

(x)3

>>

>

next

(x)4

>>

>

list

(x)[5,

6,7,

8,9]

(5)使用for迴圈遍歷生成器物件中的元素

>>

> x =

(i for i in

range(10

))>>

>

for item in x:..

.print

(item,end=

' ')..

.012

3456

789

(6)乙個有趣的例子

>>

> x =

map(

str,

range(20

))>>

>

'2'in x

true

>>

>

'2'in x #此時x有 '3','4','5','6',...,'19' 所以此表示式結果為false

false

>>

>

'8'in x #此時x為空(為了在 '3'到 '19'中尋找'2',把整個生成器物件全部遍歷,所以此時生成器是空的)

false

「訪問過的元素就刪除」 這樣的特點也存在於enumerate、filter、map、zip等迭代器物件中

python 列表 元組的基本用法總結

python列表定義 a 0,1,2,3,4,5,6 b a 0 2 代表從第0個下標開始取到第2個下標數返回給b c a 代表轉殖所有資料給c,這裡應該是值變數,不是引用位址 d a 4 0 1 這個4代表從第4個下標開始,取值到第0個下標中間的數字,並且步長是 1,就是倒序取值,這裡d的值應該是...

python元組的用法

1.什麼是元組 同list一樣,允許存放若干任意型別資料的容器 但是元組是不可變的序列 2.語法 元組是使用 括起來,內允許盛放若干元素,如果只放乙個元素的話,元素後要加 用於區分物件還是元組 1.使用字面值建立元組 1.建立空元組 t 2.建立非空元組 t 100,200,300 t 100,20...

C tuple元組的基本用法 總結

1,元組簡介 tuple是乙個固定大小的不同型別值的集合,是泛化的std pair。我們也可以把他當做乙個通用的結構體來用,不需要建立結構體又獲取結構體的特徵,在某些情況下可以取代結構體使程式更簡潔,直觀。std tuple理論上可以有無數個任意型別的成員變數,而std pair只能是2個成員,因此...