s?=?input(?"請輸入字符串:"?)
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)浙江免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
st?=?set()
for?i?in?range(?len(?s?)?):
if?st.__contains__(?s[i]?):
i1?=?s.index(?s[i]?)
print(?i1?)
print(?s[i1:i1?+?3]?)
break
else:
st.add(?s[i]?)
使用list的index方法可以找到list中第一次出現(xiàn)該元素的位置
l?=?['a','b','c','c','d','c']
find='b'
l.index(find)
1
找出出現(xiàn)該元素的所有位置可以使用一個簡單的表理解來實現(xiàn)
find?=?'c'
[i?for?i,v?in?enumerate(l)?if?v==find]
[2,?3,?5]
代碼如下:
def func1(num_list):
if len(num_list) != len(set(num_list)):
return True
else:
return False
if __name__ == '__main__':
num_list = [[1, 2, 3, 4], [6, 7, 8], [4, 5, 6, 6, 6]]
for one_list in num_list:
print(func1(one_list))
運行結(jié)果:
擴展資料
python對列表去重的幾種方式:
1、直觀方法,先建立一個新的空列表,通過遍歷原來的列表,再利用邏輯關(guān)系not in 來去重??偨Y(jié):這樣可以做出來,但是過程不夠簡單。但是此方法保證了列表的順序性。
2、利用set的自動去重功能,將列表轉(zhuǎn)化為集合再轉(zhuǎn)化為列表,利用集合的自動去重功能。簡單快速。缺點是:使用set方法無法保證去重后的順序。
參考資料:python官網(wǎng)-Doc語法文檔
這個問題有多種解法,最常見的是brute-force
也叫暴力枚舉法,也就是把兩個list當(dāng)中的每個元素都取出來進行兩兩比較,直到找到相同元素。設(shè)第一個數(shù)組的長度為n,第二個數(shù)組的長度為m,則時間復(fù)雜度為O(n*m),空間復(fù)雜度為O(1)
但是個問題常見的解決方法是哈希表。在Python當(dāng)中有Dictionary這種數(shù)據(jù)類型,其實是一個哈希表。運用這種數(shù)據(jù)類型,可以迅速檢索到想要的元素。但這種方法需要存儲一組元素,所以時間復(fù)雜度為O(n),空間復(fù)雜度為O(m)。
以下是程序:
def
find_same_element(l1,
l2):
dist
=
{}
for
i
in
l1:
dist[i]
=
1
for
i
in
l2:
if
dist.get(i)
None:
return
i
return
None
以下是檢驗
l1
=
[1,
2,
'34',
34,
5]
l2
=
[4,
7,
8]
find_same_element(l1,
l2)
應(yīng)當(dāng)輸出None
l1
=
[1,
2,
'34',
34,
5]
l2
=
[4,
7,
8,5]
find_same_element(l1,
l2)
應(yīng)當(dāng)輸出5
這個函數(shù)只能找到一個共同元素,如果兩個list有多個相同元素則只能輸出中間的一個。
這個問題常見于面試題,屬于最簡單的面試題目。需要給面試官說明的是,
第一,哈希表可以快速檢索元素,
第二,python有獨特的數(shù)據(jù)類型,
第三,多個共同元素的情況需要面試官告知如何處理,
第四,注意沒有共同元素的時候的輸出(程序中為None但面試官希望你能提出這個問題)
Duplicated函數(shù)功能:查找并顯示數(shù)據(jù)表中的重復(fù)值
這里需要注意的是:
drop_duplicates函數(shù)功能是:刪除數(shù)據(jù)表中的重復(fù)值,判斷標準和邏輯與duplicated函數(shù)一樣
前兩天處理數(shù)據(jù)的時候,需要得到兩個數(shù)據(jù)的交集數(shù)據(jù),所以要去除數(shù)據(jù)中非重復(fù)部分,只保留數(shù)據(jù)中的重復(fù)部分。
?? 網(wǎng)上看了一下大家的教程,大部分都是教去除重復(fù)行,很少有說到僅保留重復(fù)行的。所以在這里用drop_duplicates這個去重函數(shù)來實現(xiàn)這個功能。
drop_duplicates函數(shù)介紹 :
data.drop_duplicates(subset=[‘A’,‘B’],keep=‘first’,inplace=True)
#subset對應(yīng)的值是列名,表示只考慮這兩列,將這兩列對應(yīng)值相同的行進行去重。
默認值為subset=None表示考慮所有列。
keep='first’表示保留第一次出現(xiàn)的重復(fù)行,是默認值。
keep另外兩個取值為"last"和False,分別表示保留最后一次出現(xiàn)的重復(fù)行和去除所有重復(fù)行。
inplace=True表示直接在原來的DataFrame上刪除重復(fù)項,而默認值False表示生成一個副本。
要用函數(shù)取得數(shù)據(jù)集data中的重復(fù)列,分三個步驟 :
(提前導(dǎo)入pandas模塊)
data0_1 = data.drop_duplicates() #保留第一個重復(fù)行
data0_2 = data.drop_duplicates(keep=False) #去除所有重復(fù)行
data0_3=pd.concat([data0_1,data0_2]).drop_duplicates(keep=False)
#合并起來再去重,只剩下真的重復(fù)行。
舉例:data中wangwu行和tony行重復(fù),需要把它們兩行取出。
第一步:#保留第一個重復(fù)行
第二步:#去除所有重復(fù)行
第三步:#合并起來再去重
通過以上步驟實現(xiàn)取出數(shù)據(jù)中的重復(fù)行。