問(wèn)題描述: 假設(shè)我有這樣兩個(gè)list,
????????? 一個(gè)是list1,list1 = [1, 2, 3, 4, 5]
????????? 一個(gè)是list2,list2 = [1, 4, 5]
????????? 我們?nèi)绾蔚玫揭粋€(gè)新的list,list3,
????????? list3中包括所有不在list2中出現(xiàn)的list1中的元素。
????????? 即:list3 = list1 ?C list2
?????????
解決方案:
我們可以用set(集合)操作
????????? list3 = list(set(list1) ?C set(list2))
?????????
????????? set操作會(huì)將一個(gè)list轉(zhuǎn)換成一個(gè)集合。
????????? 假設(shè):list_t = [1, 2, 3, 1]
????????? 那么:list(set(list_t)) = [1, 2, 3]
????????? 是的,重復(fù)的項(xiàng)會(huì)被刪除。
其他方案:
list3 = [i for i in list1 if i not in list2]?????? #可用于list分片
????????? 這樣寫(xiě)也很直觀。
????????? 但是在list很大的時(shí)候,沒(méi)有set方法快。
額外知識(shí):
a = [[i,j] for i in range(2) for j in range(3)]
????????? 這個(gè)和“其他方案”非常相似,
????????? 都是在[]里面進(jìn)行判斷和計(jì)算。
????????? 感覺(jué)很方便,至少比下面這樣要方便、要快:
????????? a = []
????????? for i in range(2):
????????????? for j in range(3):
????????????????? a.append([i,j])
某些問(wèn)題:
如果list_tmp = [[1,2],[2,3]]
????????? 即list里面不是單獨(dú)的元素組成,而是list,
????????? 那么set(list_tmp)會(huì)出問(wèn)題。
還要研究: hash函數(shù)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
