Python中的列表是我們很常見的數據結構之一,也是很強大的數據結構之一!Python列表功能非常豐富,并且具有很多隱藏的技巧沒有被發現。
一、使用Python過濾列表
1.使用Filter()函數
filter()函數采用兩個參數:函數和可迭代項。 在這種情況下,我們將定義一個函數并過濾一個列表。
讓我們用一個例子來嘗試一下!我們將從列表開始,并過濾出所有小于3的項:
original_list?=?[1,2,3,4,5]
def?filter_three(number):
returnnumber?>?3
filtered?=?filter(filter_three,?original_list)
filtered_list?=?list(filtered)
print(filtered_list)
#?Returns[4,5]
讓我們看看這里發生了什么:
我們定義了原始列表
然后定義一個接受參數(“ number”)的函數。如果數字大于3,函數將返回True。
我們定義了一個應用filter函數的項(“ filtered”)。我們的項已篩選,是篩選對象。
最后,我們創建“ filtered_list”,將列表函數替換為filtered對象。
2.具有列表理解
類似地,我們可以用列表理解過濾列表。記住,列表理解是定義和修改列表非常簡單快捷的方式。
讓我們看看如何通過列表理解來完成前面的任務:
original_list = [1,2,3,4,5]filtered_list = [number for number in original_list if number > 3]print(filtered_list)# Return [4,5]
從這兩個示例中我們可以看出,列表理解是一種更簡單,更快捷的過濾列表方法。
二、修改列表
1.使用Map()函數
Python Map函數允許我們將函數應用于可迭代對象中的每個項。
假如我們有一個列表,想返回每個數字的平方。我們可以使用map()函數來實現這一點。讓我們看一下具體操作:
original_list?=?[1,2,3,4,5]
def?square(number):
returnnumber?**?2
squares?=?map(square,?original_list)
squares_list?=?list(squares)
print(squares)
#?Returns[1,?4,?9,?16,?25]
讓我們探討一下這里發生了什么:
首先,我們定義了原始列表和一個返回其參數平方(“number”)的函數。
然后,我們創建一個名為“squares”的新變量,它是map函數的結果,函數和原始列表作為其參數。
最后,我們創建另一個新變量,將list函數應用于squares變量。
這個方法有點復雜!接下來讓我們看看清單理解!
2.具有列表理解
我們可以使用列表理解來修改列表項。這甚至是一個更容易和更優雅的方式來編寫我們的代碼。
讓我們嘗試一下!
original_list?=?[1,2,3,4,5]
squares_list?=?[number?**?2?fornumberinoriginal_list]
print(squares_list)
#?Returns[1,4,9,16,25]
三、將列表與Zip()函數合并
在某些情況下,可能需要合并兩個或多個列表。這就是zip()函數的作用:在每個索引處創建一個包含列表對應元素的對象。
讓我們用一個例子來嘗試一下:
original_list?=?[1,2,3,4,5]
reversed_list?=?original_list[::-1]
print(reversed_list)
#?Returns:?[5,4,3,2,1]
四、顛倒列表
Python列表是有序的數據結構。因此,項目的順序很重要。有時我們可能需要顛倒列表中的項,這可以使用Python切片操作輕松完成。
讓我們用一個例子來嘗試一下:
original_list = [1,2,3,4,5]reversed_list = original_list[::-1]print(reversed_list)# Returns: [5,4,3,2,1]
五、檢查列表中的成員身份
有時我們想查看列表中是否存在某個項。
我們只需使用in運算符即可完成此操作。
games?=?['Yankees','Yankees','Cubs','Blue?Jays','Giants']
def?isin(item,?list_name):
if?item?inlist_name:?print(f"{item}?is?in?the?list!")
else:?print(f"{item}?is?not?in?the?list!")
isin('Blue?Jays',?games)
isin('Angels',?games)
#?Returns
#Blue?Jays在名單上!
#Angels不在名單上!
六、查找列表中最常見的項
如果你想在列表中找到最常見的項。例如,你可能在列表中記錄了正反面游戲的獲勝者,并且想知道哪個贏得最多。
games?=?['heads','heads','tails','heads','tails']
items?=?set(games)
print(max(items,key=?games.count))
讓我們看看這段代碼做什么:
我們用五個正面或反面游戲的結果來定義一個列表;
我們定義了列表中所有項的集合。set()函數過濾掉了列表中的重復項;
最后,我們將max()應用于項目集,并使用key參數作為集合中元素的最高計數。
七、展開列表
有時我們會得到一個列表,其中包含其他列表,也就是表中有表。你可以使用列表理解輕松做到這一點!
讓我們嘗試一下:
nested_list?=?[[1,2,3],[4,5,6],[7,8,9]]
flat_list?=?[i?forjinnested_listforiinj]
print(flat_list)
#?Returns[1,?2,?3,?4,?5,?6,?7,?8,?9]
八、檢查唯一性
如果需要檢查列表中的所有項是否唯一,則可以使用集合的功能來完成此操作!
Python中的集合類似于列表(因為它是可變且無序的),但是它只能包含唯一的項。
為此,我們需要使用一個函數將列表轉換為一個集合,并比較兩個項的長度::
list1?=?[1,2,3,4,5]
list2?=?[1,1,2,3,4]
def?isunique(list):
if?len(list)?==?len(set(list)):
print('Unique!')
else:?print('Not?Unique!')
isunique(list1)
isunique(list2)
#?Returns
#?唯一性
#?不唯一
--END--
希望你學到了以上關于列表的新知識,以及如何以不同的方式運用起來!
【編輯推薦】
【責任編輯:華軒 TEL:(010)68476606】
點贊 0