陣列除了其它
回答
所以,你要兩個列表的區別:
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list2 = [1, 2, 3, 4, 4, 6, 7, 8, 11, 77]
def list_difference(list1, list2):
"""uses list1 as the reference, returns list of items not in list2"""
diff_list = []
for item in list1:
if not item in list2:
diff_list.append(item)
return diff_list
print list_difference(list1, list2) # [5, 9, 10]
或者使用列表理解:
# simpler using list comprehension
diff_list = [item for item in list1 if item not in list2]
print diff_list # [5, 9, 10]
更漂亮:「如果項目不在列表2中」。 +1爲理解。 – 2011-04-11 09:47:59
謝謝,修正:-) – Flavius 2011-04-11 09:54:29
數學上來說,你正在尋找清單表示的兩組之間的差異。那麼如何使用Python set
,它有一個內置的差異操作(在-
操作符上超載)?
>>>
>>> arr = [1, 2, 3, 4, 5]
>>> arr2 = [3, 4, 9]
>>> set(arr) - set(arr2)
>>> sdiff = set(arr) - set(arr2)
>>> sdiff
set([1, 2, 5])
>>> list(sdiff)
[1, 2, 5]
>>>
雖然,首先將您的信息放在set
的位置會更方便。此操作表明set
更適合您的應用程序語義,而不是list
。另一方面,如果列表中可能有重複項,則set
不是一個好的解決方案。
如果您關心的是(1)保留項目出現的順序,(2)您的列表很大時的效率,您可能需要混合使用已經提出的兩種解決方案。
list2_items = set(list2)
[x for x in list1 if x not in list2_items]
(均轉換爲集將失去排序。在列表解析使用if x not in list2
會給你實際上在這兩個列表中的迭代器,這將是低效的,如果list2
大。)
如果您知道list2
不是很長,也不需要保存所有可能的微秒,所以你應該使用Flavius提出的簡單列表理解:簡短,簡單,並且確切地說明了你的意思。
大輸入,+1 – Flavius 2011-04-11 10:00:24
- 1. 除去父陣列和配對了其內陣列這裏值
- 2. 通過從其它陣列
- 3. 與值從其它陣列
- 4. 夫特3陣列 - 刪除的多個元素與其它陣列的幫助
- 5. 尋找其示出了在bash陣列
- 6. 查找其它陣列內部的陣列與lodash
- 7. PHP得到陣列值,並使用它的其他陣列
- 8. 從陣列比較它的其他陣列
- 9. 如何篩選的陣列,以對應其它陣列
- 10. 問題在Java分配的陣列,以其它陣列
- 11. 主義的MySQL,檢查陣列中的其它陣列
- 12. 取出鑰匙在其它陣列
- 13. PHP合併每個其它陣列
- 14. 如何從其它類修改陣列
- 15. 如何在其它兩個陣列
- 16. 逗號陣列上,除了通過PHP
- 17. FETCH_ASSOC錯誤的刪除了陣列
- 18. 瞭解陣列刪除功能
- 19. 刪除值它們在陣列
- 20. 瞭解陣列
- 21. 紅寶石矩陣除了多維陣列
- 22. 排序PHP數組它在其它陣列exsit
- 23. /加入了陣列
- 24. AS3/CS6:補間動畫片段陣列:它們都停止,除了1
- 25. 刪除陣列
- 26. 刪除陣列
- 27. 除了np以外,Scipy標籤陣列的索引計算更快。其中
- 28. 刪除陣列的所有項目除了最後5
- 29. 除了在矩陣用C++
- 30. 處理陣列它
Plz be clear您是否想從arr1中刪除arr2的對象 – 2011-04-11 09:47:11
您可能正在討論**列表**。數組是其他東西:http://docs.python.org/library/array.html – 2011-04-11 09:52:39