1. 程式人生 > >Python學習之路2 - 列表和元組

Python學習之路2 - 列表和元組

copy cto .com 會有 pen 輸入 插入元素 http 數據類型

列表

概念:Python內置的一種數據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。

列表的使用

names = [‘zhangsan‘,‘lisi‘,‘wangwu‘,‘zhaoliu‘] //定義一個了列表

print(names) //輸出列表的所有內容
print(names[0])  //輸出列表的第0個內容
//用索引來訪問list中每一個位置的元素,記得索引是從0開始的。

輸出結果:

技術分享

如果要取最後一個元素,除了計算索引位置外,還可以用-1做索引,直接獲取最後一個元素:

names = [‘zhangsan‘,‘lisi‘,‘wangwu‘,‘zhaoliu‘,‘vector‘]
print(names[-1])

輸出結果:

技術分享

len()函數可以獲得list元素的個數。

names = [‘zhangsan‘,‘lisi‘,‘wangwu‘,‘zhaoliu‘,‘yangzirui‘]
print(len(names))

輸出結果:

技術分享

當索引超出了範圍時,Python會報一個IndexError錯誤,所以,要確保索引不要越界,記得最後一個元素的索引還可以是len(classmates) - 1

切片

如果想取出中間一段連續的元素,則用name[1:3]的方式,這個參數是左閉右開的。也就是說從第1位取到第2位。

names = [‘zhangsan‘,‘lisi‘,‘wangwu‘,‘zhaoliu‘]
print(names[1:3])# 切片

輸出結果:

技術分享

跳著切片

names = [‘zhangsan‘,‘lisi‘,‘wangwu‘,‘zhaoliu‘]
print(names[0:-1:2]) # 從第0個到倒數第2個, 每兩個元素取一個

輸出結果:

技術分享

倒著切片

names = [‘zhangsan‘,‘lisi‘,‘wangwu‘,‘zhaoliu‘,‘vector‘,‘zhaoliu‘]
print(names[-3,-1]) # 這也是左閉右開的,表示從倒數第三個切到倒數第二個
    # 如果想切到倒數第一個, 就這樣寫 name[-3:] 這樣就表示從倒數第三個切到最後一個了

輸出結果:

技術分享

追加元素

如果想在列表的最後面追加一個元素, 就用函數append(‘元素‘)。

names = [‘zhangsan‘,‘lisi‘,‘wangwu‘,‘zhaoliu‘,‘vector‘,‘zhaoliu‘]
names.append(‘sunqi‘)
print(names)

輸出結果:

技術分享

插入元素

插在任意元素的前面, 用函數insert(2,‘元素‘)。

names = [‘zhangsan‘,‘lisi‘,‘wangwu‘,‘zhaoliu‘,‘vector‘,‘zhaoliu‘]
names.insert(1,‘yangsan‘) # 插在下標為1的元素的前面
print(names)

輸出結果:

技術分享

修改元素

names = [‘zhangsan‘,‘lisi‘,‘wangwu‘,‘zhaoliu‘,‘vector‘,‘zhaoliu‘]
names[2] = ‘shenmegui‘
print(names)

輸出結果:

技術分享

刪除元素的三種方法

names = [‘zhangsan‘,‘lisi‘,‘wangwu‘,‘zhaoliu‘]
names.remove(‘shenmegui‘) # 根據內容刪除 del names[2] # 根據下標刪除 names.pop(2) # 如果輸入下標,則效果=del names[2], 如果不輸入下標,則默認刪除最後一個元素

根據元素內容找到元素的下標

names = [‘zhangsan‘,‘lisi‘,‘wangwu‘,‘zhaoliu‘,‘vector‘,‘zhaoliu‘]
print(names.index(‘zhangsan‘)) //利用index函數將下標取出來
# 還有一種方式是在循環的時候取出下標
for i in enumerate(names):
    print(i) # 這樣取的時候就會有下標
# 但是如果我想把下標分離出來, 該怎麽處理
for index,i in enumerate(names):
    print(index,i) # 這樣index裏面就裝了分離出來的下標

計算某個元素的個數

names = [‘zhangsan‘,‘lisi‘,‘zhangsan‘,‘zhaoliu‘,‘vector‘,‘zhaoliu‘]
print(names.count(‘zhangsan‘))

輸出結果:

技術分享

清空列表

names = [‘zhangsan‘,‘lisi‘,‘zhangsan‘,‘zhaoliu‘,‘vector‘,‘zhaoliu‘]
names.clear()

翻轉列表

names = [‘zhangsan‘,‘lisi‘,‘zhangsan‘,‘zhaoliu‘,‘vector‘,‘zhaoliu‘]
names.reverse()
print(names)

輸出結果:

技術分享

排序

規則是按照ASCII碼表的順序排的。

names = [‘zhangsan‘,‘lisi‘,‘zhangsan‘,‘zhaoliu‘,‘vector‘,‘zhaoliu‘]
names.sort()
print(names)

輸出結果:

技術分享

追加合並

names = [‘zhangsan‘,‘lisi‘,‘zhangsan‘,‘zhaoliu‘,‘vector‘,‘zhaoliu‘]
names2 = [1,2,3,4]
names.extend(names2)
print(names)

輸出結果:

技術分享

淺拷貝列表

這個第一維時是深拷貝,第二維開始是淺拷貝。

names = [‘zhangsan‘,‘lisi‘,‘wangwu‘,‘zhaoliu‘]
names3 = names.copy() // 第一種方式 p1 = names[:]      // 第二種方式 p2 = list(names)    // 第三種方式

深拷貝 需要引入copy模塊

names = [‘zhangsan‘,‘lisi‘,‘zhangsan‘,‘zhaoliu‘,‘vector‘,‘zhaoliu‘]
import copy
names2 = copy.copy(names)

循環列表

names = [‘zhangsan‘,‘lisi‘,‘zhangsan‘,‘zhaoliu‘,‘vector‘,‘zhaoliu‘]
for i in names:
    print(i)

輸出結果:

技術分享

判斷一個元素是否在列表裏

names = [‘zhangsan‘,‘lisi‘,‘zhangsan‘,‘zhaoliu‘,‘vector‘,‘zhaoliu‘]
if ‘zhangsan‘ in names:
    print(‘存在‘)

輸出結果:

技術分享

元組

元組就是只能查數據的列表。

定義格式:

names = (‘zhangsan‘,‘lisi‘)

  它只有兩個方法, count 和 index。

Python學習之路2 - 列表和元組