listpython重復
1. python實現給定一個列表判斷裡面是否有重復
有兩個方法:
使用列表的count方法,因為count方法可以做對象內的元素進行出現次數疊加計算
list1=[1,2,3,4,4,5,6,7]list1.count(1)#結果為1list1.count(4)#結果為2foriinlist1:iflist1.count(i)>=2:print('該元素%s重復'%i)#結果:該元素4重復該元素4重復#因為迭代了兩次4所以有兩次輸出,功能是實現了,但是卻列印了兩次,有點不理想- list1=[1,2,3,4,4,5,6,7]list2=list1.()#為了不破壞原數據,臨時淺復制給變數list2list3=list(set(list2))#使用set()函數將list2轉為集合去掉重復元素又用list()轉回列表foriinlist3:#對無重復元素的列表list3迭代ifiinlist2:list1.remove(i)#當list3內的元素存在於list2中,則把其元素從list2中刪除,最後就會留下重復元素print('list1:%s中的重復元素有:%s'%(list1,list2))#組後輸出原數據list1和最終結果list2#結果:list1:[1,2,3,4,4,5,6,7]中的重復元素有:[4]#效果實現了,也沒問題,就是變數使用有點多。看你選擇了
2.借用工廠函數set()把對象轉為集合和列表的方法(淺復制),集合會默認把重復元素去掉
2. python找出列表元素重復個數和重復值
輸出列表元素重復個數
def get_element(data):
dic = {}
i = 0
while i < len(data):
if data[i] in dic:
""滲搜"
循迅散環查找列表元素,如果一個元素出現一次,value就等於1,多次出現,value就增加
"畝喊氏""
dic[data[i]] += 1
else:
dic[data[i]] = 1
i += 1
for j, k in dic.items():
if k > 1:
print('data數組中重復的元素有%d,它的個數是%d個'%(j,k))
print(dic)
my_list =[1,2,3,4,2,4,2,3,4,5,6,23,23,32]
get_element(my_list)
3. python如何實現刪除某list中所有重復出現的元素
1. 使用內置函數set
lists = [1,1,2,3,4,6,6,2,2,9]
lists = list(set(lists))
先將列表轉換為集合,因為集合是不重復的,故直接刪除重復元素,而且輸出結果為排序後的
4. python如何刪除list里重復的元素
這個可簡單可復雜。
簡單的:利用集合
a=list(set(a))#這樣就可以了,是不是很簡單
復雜的:
就是先對列表排序,然後比較相鄰元素是否相同,相同的則刪除後面的。大體演算法思路,代碼自己寫吧
當然還有其他的演算法...
-----------------------------------------------------------------------------------
額, 不好意思,看錯了
defQ(a):
aa=[]
foriina:
ifa.count(i)==1:
aa.append(i)
returnaa
這個就可以了,利用 list.count(obj) 計算obj在list中出現的次數進行判斷
5. python如何刪除list里重復的元素
一共使用四種方法來去除列表中的重復元素,下面是具體實現:
def f1(seq):
# not order preserving
set = {}
map(set.__setitem__, seq, [])
return set.keys()
def f2(seq):
# order preserving
checked = []
for e in seq:
if e not in checked:
checked.append(e)
return checked
def f3(seq):
# Not order preserving
keys = {}
for e in seq:
keys[e] = 1
return keys.keys()
def f4(seq):
# order preserving
noDupes = []
[noDupes.append(i) for i in seq if not noDupes.count(i)]
return noDupes
def f5(seq, idfun=None):
# order preserving
if idfun is None:
def idfun(x): return x
seen = {}
result = []
for item in seq:
marker = idfun(item)
# in old Python versions:
# if seen.has_key(marker)
# but in new ones:
if marker in seen: continue
seen[marker] = 1
result.append(item)
return result
def f6(seq):
# Not order preserving
set = Set(seq)
return list(set)
6. python中list中怎麼刪除重復數據保留一條
可以先統計list中每個數據的個數,用一個dict存儲,然後遍歷list,判斷是否是最後一個,是的就從list中刪除即可
7. python 如何找出兩個list中的相同元素
這個問題有多種解法,最常見的是brute-force 也叫暴力枚舉法,也就是把兩個list當中的每個元素都取出來進行兩兩比較,直到找到相同元素。設第一個數組的長度為n,第二個數胡兆組的長度為m,則時間復雜度為O(n*m),空間復雜度為O(1)
但是個問題陵穗常見的解決方法是哈希表。在Python當中有Dictionary這種數據類型,其實是一個哈希表。運用這種數據類型,可以迅速檢索到想要的元素。但這種方法需要存儲一組元素,所以時間復雜度為O(n),空間復雜度為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]
print find_same_element(l1, l2)
應當輸出None
l1 = [1, 2, '34', 34, 5]
l2 = [4, 7, 8,5]
print find_same_element(l1, l2)
應當輸出5
這個函數只能找尺做卜到一個共同元素,如果兩個list有多個相同元素則只能輸出中間的一個。
這個問題常見於面試題,屬於最簡單的面試題目。需要給面試官說明的是,
第一,哈希表可以快速檢索元素,
第二,python有獨特的數據類型,
第三,多個共同元素的情況需要面試官告知如何處理,
第四,注意沒有共同元素的時候的輸出(程序中為None但面試官希望你能提出這個問題)