Python基礎(4)列表及常用操作

列表(list)

1.創建列表

(1).直接創建

 number = [1,2,3,4,'你好']

(2).通過list()創建,開發過程中常用來進行其他數據類型向列表數據的強制轉換

a = list(range(10,20,2))
print(a)

結果:

[10, 12, 14, 16, 18]

(3).通過表達式創建列表,語法結構[數學表達式 條件1 條件2 條件3…]

list1 = [x ** 2 for x in range(1,9) if x&1 == 0]
print(list1)

結果:

[4, 16, 36, 64]

(4).生成器

在編程中,我們有時需要生成一個列表,但是該列表可能佔據大量的內存,此時列表直接加載到內存中就不再可取了,python提供一個列表生成器,列表生成器是一段生成對應列表的算法。
優點: 節省內存; 提高程序運行效率.
列表生成器每一次迭代,生成器產生的對應的數會被回收。

列表生成器的兩種寫法:

將列表的 [ ] 改成 ()
下面是一個列表:

a = [x for x in range(10)]
print(type(a))

結果:

<class 'list'>

此時,將 [ ] 改成 ()

a = (x for x in range(10))
print(type(a))

結果:

<class 'generator'>

遍歷可以查看a的所有值,但當你將a的所有值遍歷一遍後,a對應的列表就會被銷燬。
for i in a:
print(i)
除了用遍歷查看a的值外,還可以用next( a )來查看a的值,next( a )查看a的值每次只能查看一個,從0開始,到9結束,當再次執行next( a )時返回stoplteration。
比如下列代碼:

a = (x for x in range(10))
print(type(a))
print(next(a))

結果:

<class 'generator'>
0

當多添加幾個print(next(a))時,就會接着往下生成數據,如下:

a = (x for x in range(10))
print(type(a))
print(next(a))
print(next(a))
print(next(a))

結果:

<class 'generator'>
0
1
2

當最後一個數字9生成以後,再執行print(next(a))時,返回stoplteration。

將函數轉化爲列表生長器 yield

def foo():
    print("starting...")
    while True:
        res = yield 4
        print("res:",res)
g = foo()
print(next(g))
print("*"*20)
print(next(g))

結果:

starting...
4
********************
res: None
4

解釋:

1.程序開始執行以後,因爲foo函數中有yield關鍵字,所以foo函數並不會真的執行,而是先得到一個生成器g(相當於一個對象)
2.直到調用next方法,foo函數正式開始執行,先執行foo函數中的print方法,然後進入while循環
3.程序遇到yield關鍵字,然後把yield想想成return,return了一個4之後,程序停止,並沒有執行賦值給res操作,此時next(g)語句執行完成,所以輸出的前兩行(第一個是while上面的print的結果,第二個是return出的結果)是執行print(next(g))的結果
4.程序執行print("*"20),輸出20個
5.又開始執行下面的print(next(g)),這個時候和上面那個差不多,不過不同的是,這個時候是從剛纔那個next程序停止的地方開始執行的,也就是要執行res的賦值操作,這時候要注意,這個時候賦值操作的右邊是沒有值的(因爲剛纔那個是return出去了,並沒有給賦值操作的左邊傳參數),所以這個時候res賦值是None,所以接着下面的輸出就是res:None,
6.程序會繼續在while裏執行,又一次碰到yield,這個時候同樣return 出4,然後程序停止,print函數輸出的4就是這次return出的4.

2.增

有append()、extend()和insert()三種方法

(1).append() 將元素添加到列表末尾

number = [0,1,2,3,4]
number.append(5)
print(number)

結果:

[0, 1, 2, 3, 4, 5]

(2).extend()方法可以添加多個元素,但是必須以列表的形式添加

number = [0,1,2,3,4]
number.extend([5,6])
print(number)

結果:

[0, 1, 2, 3, 4, 5, 6]

(3).前兩種方法均將元素添加到列表末尾,如果想插隊的話就需要使用insert()方法了

number = [0,1,2,3,4]
number.insert(2,1)
print(number)

結果:

[0, 1, 1, 2, 3, 4]

insert(2,1)中2指位置,1是需要添加的元素(列表第一個元素所在位置爲0)。

3.刪

列表中刪除元素一共有remove()、del和pop()三種方法

(1).remove():需要知道列表中已經存在的元素,這樣纔可以實現元素的刪除

number = ['羅','思','洋']
number.remove('羅')
print(number)

結果:

['思', '洋']

(2).當我們需要刪除指定位置的元素時,就需要使用del方法

number = ["羅",'思','洋']
del number[0]
print(number)

del後直接跟列表名可以刪除整個列表。

(3).pop()方法可以彈出元素,若無指定索引值作爲參數時默認彈出最後一個元素

number1 = ["羅",'思','洋']
print(number1.pop())
number2 = ["羅",'思','洋']
print(number2.pop(0))
print(number1)
print(number2)

結果:

洋
羅
['羅', '思']
['思', '洋']

使用三種方法都可以實現元素的刪除。

4.改

根據下標修改

number = ["羅",'思','洋']
number[0] = 5
print(number)

結果:

[5, '思', '洋']

5.查

(1).索引

fruits=['apple','peach','Lemon','Pear','Banana','watermelon']
print(fruits[0:2])

結果:

['apple', 'peach']

也可以輸入單個索引值查詢一個元素

(2).for遍歷查詢

for i in team:
print(i)

或者:

team = ['火箭','勇士','開拓者','爵士','鵜鶘','馬刺','雷霆']
for index,item in enumerate(team):
    print(index + 1,item)

結果:

1 火箭
2 勇士
3 開拓者
4 爵士
5 鵜鶘
6 馬刺
7 雷霆

補充enumerate():枚舉,輸出下標及值

seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))

輸出:

[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

6.其它常用操作

(1)len(列表):列表長度
(2)if 數據 in 列表:檢查列表中是否包含某元素
(3)列表.sort():升序排列
(4)列表.sort(reverse = True):降序排列
(5)列表.reverse():逆序,反轉
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章