欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python十大列表操作技巧分享

 更新時間:2024年01月28日 11:49:29   作者:微小冷  
這篇文章給大家介紹了Python十大列表操作技巧分享,列表展開,降維,分塊,轉(zhuǎn)置,查找眾數(shù),判斷重復元素等十個操作技巧,并通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下

列表展開

對于形如 [ 1 , [ 2 ] , [ [ 3 ] , 4 ] , 5 ] 的列表,將其展開為 [ 1 , 2 , 3 , 4 , 5 ]。算法思路為,遍歷列表A0中的元素,如果該元素A1仍為列表,則將A1的元素追加到A0的末尾。

def flatten(lst):
    i = 0
    while(i<len(lst)):
        if isinstance(lst[i],list):
            lst.extend(lst[i])
        i += 1
    return [n for n in lst if not isinstance(n,list)]

lst = [1, [2], [[3], 4], 5]
flatten(lst)
# [1, 5, 2, 4, 3]

降維

當列表中的所有數(shù)據(jù)均為列表時,可以通過單星號索引之后,用itertools中的chain函數(shù)進行拼接。

from itertools import chain
a = [[1, 2], [3, 4], [5, 6]]
chain(*a)
# [1, 2, 3, 4, 5, 6]

分塊

python內(nèi)置了map函數(shù),可以遍歷列表并對每個元素進行映射。對于list(map(func,myList)),等價于[func(e) for e in myList]。根據(jù)這個特性,可以對列表進行分塊。

from math import ceil   #ceil為向上取整

def chunkByFor(lst, size):
    return [lst[x*size:x*size+size] 
        for x in range(0,ceil(len(lst)/size))]

def chunkByMap(lst, size): 
    return list(
        map(lambda x: lst[x * size:x * size + size],    	
            list(range(0, ceil(len(lst) / size)))))    	

chunk([1,2,3,4,5],2) # [[1,2],[3,4],5]

轉(zhuǎn)置

zip可以像拉鏈一樣將數(shù)組中對應(yīng)的值縫合起來,以元組的形式重新存儲。根據(jù)這個特性,可完成列表的"轉(zhuǎn)置"。

lst = [[1,2], [3,4], [5,6]]
list(zip(*lst))
#[(1, 3, 5), (2, 4, 6)]

查找眾數(shù)

列表中封裝了count方法,可以統(tǒng)計其中的元素個數(shù),例如

lst =  [1,2,1,2,3,2,1,4,2]
lst.count(1)
# 3   即lst中1出現(xiàn)了3次

而最大值選取函數(shù)max中有一個參數(shù)key,表示選取最大值的依據(jù),例如

x = [-2,-1,0,1,2]
def test(x): return x**2-2*x

max(x,key=test)
# -2

表示選出當函數(shù)test值最大時的自變量。

根據(jù)這兩個特點,可以得到查找列表中出現(xiàn)次數(shù)最多元素的方法為

lst = [1,2,3,4,5,2,3,2,1,2,4]
max(set(lst),key=lst.count)	# 2

判斷重復元素

借助集合中元素不重復的特性,可以檢驗非集合數(shù)據(jù)中是否有重復數(shù)據(jù)。下面代碼種,set可將列表轉(zhuǎn)換為集合,如果轉(zhuǎn)換之后元素個數(shù)不變,則說明列表中沒有重復元素。

def isUnique(lst):    	
    return len(lst) == len(set(lst)) 

x = [1,2,3,4,5,5]
y = [1,2,3,4,5]	
isUnique(x)	# False
isUnique(y)	# True

比較元素差異

在python中,集合set提供了類似做差的操作difference。對于集合AB而言,若想實現(xiàn)A-B的功能,可采取A.difference(B)的方案。

對于其他數(shù)據(jù)結(jié)構(gòu),可先轉(zhuǎn)為set再行做差。且difference會自動將輸入變量轉(zhuǎn)為set。

A = [1,2,3]
B = [1,2,4]
list(set(A).difference(B))	# [3]

比較列表計算后的差異

現(xiàn)有一函數(shù)func,對于兩組數(shù)據(jù)AB,如果希望得到func(A)func(B)的差別,也可以采用set的特性。

def funcMinus(A, B, func):	
    B = set(map(func, B))     #剔除func(B)中的重復元素
    return [a for a in A if fn(a) not in B]	
  • 篩選數(shù)據(jù)

filter是python的內(nèi)置函數(shù),用于過濾不符合條件的數(shù)據(jù)。list(filter(func,myList))等價于[e for e in myList if func(e)==1]。

為列表添加索引

enumerate可以將列表、元組等組合為索引序列,并可以聲明初始值,例如

orders = ['first','second','third']
list(enumerate(orders))
# [(0, 'first'), (1, 'second'), (2, 'third')]
list(enumerate(orders,2))
# [(2, 'first'), (3, 'second'), (4, 'third')]

這可以非常方便地應(yīng)用到for循環(huán)中

>>> for i,val in enumerate(orders,1):
...   print(i,val)
...
1 first
2 second
3 third

回文

在python中,對列表或者字符串采用:進行索引,例如a:b指的是從a到b的數(shù)據(jù);當采用雙引號::時,引號間的值的意義就發(fā)生了變化,例如a:b:c表示從a到b,間隔為c的數(shù)據(jù)。

據(jù)此,可以得到::-1表示將字符串顛倒過來,據(jù)此可以判斷一個字符串是否為回文結(jié)構(gòu)

>>> s = "abcde"
>>> s[::-1]
'edcba'
>>> s == s[::-1]
False

到此這篇關(guān)于Python十大列表操作技巧分享的文章就介紹到這了,更多相關(guān)Python列表操作技巧內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python利用高階函數(shù)實現(xiàn)剪枝函數(shù)

    python利用高階函數(shù)實現(xiàn)剪枝函數(shù)

    這篇文章主要為大家詳細介紹了python利用高階函數(shù)實現(xiàn)剪枝函數(shù)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Python的Pandas時序數(shù)據(jù)詳解

    Python的Pandas時序數(shù)據(jù)詳解

    這篇文章主要為大家詳細介紹了Pandas時序數(shù)據(jù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python決策樹和隨機森林算法實例詳解

    Python決策樹和隨機森林算法實例詳解

    這篇文章主要介紹了Python決策樹和隨機森林算法,集合實例形式詳細分析了決策樹和隨機森林算法的概念、原理及Python相關(guān)實現(xiàn)技巧與注意事項,需要的朋友可以參考下
    2018-01-01
  • Python爬蟲之使用MongoDB存儲數(shù)據(jù)的實現(xiàn)

    Python爬蟲之使用MongoDB存儲數(shù)據(jù)的實現(xiàn)

    本文主要介紹了Python爬蟲之使用MongoDB存儲數(shù)據(jù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Python使用pyecharts控件繪制圖表

    Python使用pyecharts控件繪制圖表

    這篇文章介紹了Python使用pyecharts控件繪制圖表的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Python 實現(xiàn)購物商城,含有用戶入口和商家入口的示例

    Python 實現(xiàn)購物商城,含有用戶入口和商家入口的示例

    下面小編就為大家?guī)硪黄狿ython 實現(xiàn)購物商城,含有用戶入口和商家入口的示例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Python 實現(xiàn)打印單詞的菱形字符圖案

    Python 實現(xiàn)打印單詞的菱形字符圖案

    這篇文章主要介紹了Python 實現(xiàn)打印單詞的菱形字符圖案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python內(nèi)置類型性能分析過程實例

    Python內(nèi)置類型性能分析過程實例

    這篇文章主要介紹了Python內(nèi)置類型性能分析過程實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • 詳解Python3 定義一個跨越多行的字符串的多種方法

    詳解Python3 定義一個跨越多行的字符串的多種方法

    這篇文章主要介紹了詳解Python3 定義一個跨越多行的字符串的多種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • OpenCV-Python實現(xiàn)輪廓檢測實例分析

    OpenCV-Python實現(xiàn)輪廓檢測實例分析

    這篇文章主要介紹了OpenCV-Python實現(xiàn)輪廓檢測實例分析,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01

最新評論