Python 基礎 2 - 列表

瘋狂的大志GD發表於2019-08-30

引言

列表 list 是由一系列按照特定順序排列的元素組成的,它是一種有序的資料集合。
你可以新增任何型別的元素到列表中,其中的元素之間可以沒有任何關係。

列表簡介

Python 使用方括號 [] 來定義列表,列表中的每個值稱為元素。
每個元素之間用逗號 , 分割開,每個元素都有自己唯一的索引值。
索引值分上標索引和下標索引,下標索引從 0 開始,上標索引從 -1 開始。
你可以理解為:下標索引 = 正序索引,上標索引 = 倒序索引

建立列表

一般將建立的列表賦給一個變數,因此給變數取個有意義的名字是個不錯的注意
列印列表時,會將方括號 [] 也列印出來

如果你想定義一個空列表可以直接使用方括號 [] 而不在裡面傳值
定義一個人員列表,如下示例。

persons = ['張三','李四','王五','趙六','錢七','孫八']
print(persons)
# 執行結果:['張三', '李四', '王五', '趙六', '錢七', '孫八']

列表取值

列表有兩種取值方式,1.按索引號取值 2.範圍取值(切片)

按索引號取值

在列表變數後面加上方括號 [] 裡面傳入元素的索引號,如下示例

persons = ['張三','李四','王五','趙六','錢七','孫八']
print(persons[0])
# 執行結果:張三

範圍取值

範圍取值只需在方括號內傳入兩個引數,即 [開始索引:結束索引]
Python 遵循左閉右開原則,即包含左邊的而不包含右邊的,所以實際取到的最後一個值是 結束索引-1。

列表範圍取值

例如取值 1~3 位置的元素,實際只取值到 1~2 位置的元素,如下示例

persons = ['張三','李四','王五','趙六','錢七','孫八']
print(persons[0:3])
# 執行結果:['張三', '李四', '王五']
範圍取值指定步長

範圍取值可以指定步長,只需傳入3個引數,即 [開始索引:結束索引:指定步長]
如果你想範圍取值的時候隔一個或N個元素取值,指定步長是個不錯的注意。

# 隔一個元素取值
persons = ['張三','李四','王五','趙六','錢七','孫八']
print(persons[0:5:2])
# 執行結果:['張三', '王五', '錢七']

新增

列表的新增操作

在指定位置插入元素 insert()

# 插入元素
persons = ['張三','李四','王五','趙六','錢七','孫八']
persons.insert(6,'楊九')
print(persons)
# 執行結果:['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九']

方法在列表末尾追加元素 append()

# 在末尾追加元素
persons = ['張三','李四','王五','趙六','錢七','孫八']
persons.append('楊九')
print(persons)
# 執行結果:['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九']

在列表末尾追加多個元素 extend()

使用 extend() 方法在末尾同時追加多個元素

# 同時在末尾追加多個元素
persons = ['張三','李四','王五','趙六','錢七','孫八']
persons.extend(['楊九','吳十'])
print(persons)
# 執行結果:['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']

刪除

列表的刪除操作

按索引號彈出元素 pop()

pop() 有返回值,彈出的元素可以儲存到一個新的變數中,以便下次使用,也可以不儲存,不儲存就是刪除

以下示例中很好的體現了 pop() 彈出的元素能夠儲存到另一個變數中

persons = ['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
persons2 = persons.pop(0)
print(persons)  # 執行結果:['李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
print(persons2)  # 執行結果:張三

按元素名稱移除元素 remove()

值得注意的是,如果列表中存在多個相同的元素,remove() 方法只會移除正序索引遇到的第一個元素,如果想移除全部可以使用遍歷

persons = ['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
persons.remove('張三')
print(persons)  # 執行結果:['李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']

刪除元素 del

del 是Python的語句,而不是列表 list 的方法,del是傳入索引號刪除的,但沒有返回值

persons = ['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
del persons[0]
print(persons)  # 執行結果:['李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']

其他

列表的一些其他使用方法

len() 函式

使用 len() 函式看列表共有幾個元素

persons = ['張三','李四','王五','趙六','錢七','孫八']
print( len(persons) )  # 執行結果:6

count() 函式

使用 count() 方法檢視元素在列表中出現幾次

# 獲取元素 李四 在列表中出現幾次
persons = ['張三','李四','王五','李四','趙六','錢七','孫八']
cnt = persons.count('李四')
print(cnt)  # 執行結果:2

使用 index() 函式檢視元素索引號

index() 方法只返回遇到的第一個符合條件的元素,如果有多個重複的元素名稱需要使用遍歷

如下示例,檢視元素 ”李四“ 的索引號時只返回遇到的第一個元素

persons = ['張三','李四','王五','李四','趙六','錢七','孫八']
print( persons.index('李四') )
# 執行結果:1

遍歷獲取 “李四” 的索引號,如下示例

persons = ['張三','李四','王五','李四','趙六','錢七','孫八']
i = 0
for p in persons:
    if p == '李四':
        print(i,end='\t')
    i += 1
# 執行結果:1    3

分割列表 split()

將字串資料按特定規則分割成列表

例如以下示例, persons 變數中儲存的字串,每個人員用逗號 , 分割開,使用 split() 方法可以讓其分割成列表

persons = '張三,李四,王五,趙六,錢七,孫八,楊九,吳十'
persons_list = persons.split(',')
print(persons_list)
# 執行結果:['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']

使用 copy() 方法複製列表

複製出來的列表是一份獨立全新的資料,更改原列表內容不會影響複製的列表

# 複製列表
persons = ['張三' , '李四' , '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
persons2 = persons.copy()
persons.remove('李四')
print(persons) # 執行結果:['張三', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
print(persons2) # 執行結果:['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']

成員運算子 in

判斷資料是否存在列表中

# 使用成員運算子判斷張三是否存在 `persons` 列表中
persons = ['張三' , '李四' , '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
persons2 = '張三'
print(persons2 in persons)
# 執行結果:True

身份運算子 is

判斷兩個變數是否使用同一記憶體地址,是否指向同一塊記憶體空間

persons = ['張三' , '李四' , '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
persons2 = persons.copy()
persons3 = persons
print(persons2 is persons)  # 執行結果:False
print(persons3 is persons)  # 執行結果:False

清空列表內容 clear()

以下清空列表示例中很好的展示了 copy() 出來的資料是一塊獨立全新的資料,清空 persons 列表的內容對它絲毫不受影響

persons = ['張三' , '李四' , '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
persons2 = persons.copy()
persons3 = persons
persons.clear()
print(persons)
print(persons2)
print(persons3)
'''
執行結果:
[]
['張三', '李四', '王五', '趙六', '錢七', '孫八', '楊九', '吳十']
[]
'''

大志 Python

努力學習,讓未來的網際網路每一處都有我們的腳印

相關文章