亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python十大列表操作技巧分享

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

列表展開

對(duì)于形如 [ 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]

降維

當(dāng)列表中的所有數(shù)據(jù)均為列表時(shí),可以通過(guò)單星號(hào)索引之后,用itertools中的chain函數(shù)進(jìn)行拼接。

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

分塊

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

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ù)組中對(duì)應(yīng)的值縫合起來(lái),以元組的形式重新存儲(chǔ)。根據(jù)這個(gè)特性,可完成列表的"轉(zhuǎn)置"。

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

查找眾數(shù)

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

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

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

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

max(x,key=test)
# -2

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

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

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

判斷重復(fù)元素

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

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。對(duì)于集合AB而言,若想實(shí)現(xiàn)A-B的功能,可采取A.difference(B)的方案。

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

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

比較列表計(jì)算后的差異

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

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

filter是python的內(nèi)置函數(shù),用于過(guò)濾不符合條件的數(shù)據(jù)。list(filter(func,myList))等價(jià)于[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中,對(duì)列表或者字符串采用:進(jìn)行索引,例如a:b指的是從a到b的數(shù)據(jù);當(dāng)采用雙引號(hào)::時(shí),引號(hào)間的值的意義就發(fā)生了變化,例如a:b:c表示從a到b,間隔為c的數(shù)據(jù)。

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

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

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

相關(guān)文章

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

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

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

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

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

    Python決策樹和隨機(jī)森林算法實(shí)例詳解

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

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

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

    Python使用pyecharts控件繪制圖表

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論