python 中對list做減法操作

來源:互聯網
上載者:User

標籤:for   問題   python   app   on   sp   如何   函數   

問題描述:假設我有這樣兩個list,
          一個是list1,list1 = [1, 2, 3, 4, 5]
          一個是list2,list2 = [1, 4, 5] 
          我們如何得到一個新的list,list3,
          list3中包括所有不在list2中出現的list1中的元素。
          即:list3 = list1 - list2
          
解決方案:我們可以用set(集合)操作
          list3 = list(set(list1) - set(list2))
          
          set操作會將一個list轉換成一個集合。
          假設:list_t = [1, 2, 3, 1]
          那麼:list(set(list_t)) = [1, 2, 3]
          是的,重複的項會被刪除。

其他方案:list3 = [i for i in list1 if i not in list2]       #可用於list分區
          這樣寫也很直觀。
          但是在list很大的時候,沒有set方法快。

額外知識:a = [[i,j] for i in range(2) for j in range(3)]
          這個和“其他方案”非常相似,
          都是在[]裡面進行判斷和計算。
          感覺很方便,至少比下面這樣要方便、要快:
          a = []
          for i in range(2):
              for j in range(3):
                  a.append([i,j])

某些問題:如果list_tmp = [[1,2],[2,3]]
          即list裡面不是單獨的元素組成,而是list,
          那麼set(list_tmp)會出問題。

還要研究:hash函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.