Python快速找到列表中所有重复的元素
Python快速找到列表中所有重復(fù)的元素:https://blog.csdn.net/sinat_29957455/article/details/103886088
index方法
為了能夠找到元素在列表中的位置,我們通常會使用list.index()方法來元素的下標(biāo),但是這種方法有一個弊端,就是當(dāng)列表中出現(xiàn)重復(fù)元素的時候,index方法只會返回第一個元素的位置,代碼如下
a = ["a","b","c","a","d","a"] print(a.index("a"))#輸出為0通過上面的代碼可以發(fā)現(xiàn),index方法的返回值是一個整數(shù),不存在是-1,這樣我們就沒辦法獲取多個下標(biāo)的位置。當(dāng)然你可以通過
移除列表中的元素,然后再去尋找下一個元素的位置,當(dāng)返回-1時結(jié)束。或者,你還可以通過結(jié)合字典來做這些都是可以的,這里我要用一個更簡單的方法,就是利用numpy的where和argwhere方法。
where方法
numpy提供了一個where方法,返回的是一個元組,里面包含了一個數(shù)組,數(shù)組中包含了符合條件元素的下標(biāo)
import numpy as np#將列表轉(zhuǎn)換為numpy的數(shù)組 a = np.array(["a","b","c","a","d","a"]) #獲取元素的下標(biāo)位置 eq_letter = np.where(a == "a") print(eq_letter[0])#[0 3 5]argwhere方法
import numpy as np#將列表轉(zhuǎn)換為numpy的數(shù)組 a = np.array([["a","b","c"],["a","d","a"]]) #獲取元素的下標(biāo)位置 eq_letter = np.where(a == "a") print(eq_letter)#(array([0, 1, 1]), array([0, 0, 2]))對于多維數(shù)組來說,使用where函數(shù)返回的是一個元祖,對于二維數(shù)組來說元祖的一個數(shù)組表示的是行索引第二個數(shù)組表示的是列索引,而argwhere返回的是一個數(shù)組,如果將where返回的結(jié)果轉(zhuǎn)換為數(shù)組,則兩個數(shù)組正好互為轉(zhuǎn)置數(shù)組
import numpy as np#將列表轉(zhuǎn)換為numpy的數(shù)組 a = np.array([["a","b","c"],["a","d","a"]]) #獲取元素的下標(biāo)位置 eq_letter = np.argwhere(a == "a") print(eq_letter) """ [[0 0][1 0][1 2]] """通過argwhere函數(shù)就可以精確獲取元素的下標(biāo)位置,第一個參數(shù)代表行,第二個參數(shù)代表列
總結(jié)
以上是生活随笔為你收集整理的Python快速找到列表中所有重复的元素的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DSSM、CNN-DSSM、LSTM-D
- 下一篇: python实现大批量pdf格式论文的重