第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何使用“設(shè)置”保持有序列表?

如何使用“設(shè)置”保持有序列表?

胡說叔叔 2021-05-14 18:11:59
我希望能夠在比較時(shí)保持列表的順序。請注意,當(dāng)我將list1與list2比較時(shí),它返回的是8,然后是7(反向)。如何維護(hù)訂單?>>> list1 = ['1','2','3','4','7','8'] >>> list2 = ['1','2','3','4','5','6']>>> list(set(list2) - set(list1))    ['5', '6']>>> list(set(list1) - set(list2))    ['8', '7']
查看完整描述

3 回答

?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

AnOrderedDict可以很好地替代保留訂單的集合,因?yàn)殒I視圖類似于集合:


>>> from collections import OrderedDict

>>> list1 = ['1','2','3','4','7','8'] 

>>> list2 = ['1','2','3','4','5','6']

>>> OrderedDict.fromkeys(list1).keys() - OrderedDict.fromkeys(list2).keys()

{'7', '8'}

>>> OrderedDict.fromkeys(list2).keys() - OrderedDict.fromkeys(list1).keys()

{'5', '6'}

嚴(yán)格來說,這可能仍在使用CPython的實(shí)現(xiàn)細(xì)節(jié)。但是列表理解不是,它們?nèi)匀皇荗(n):


>>> od1 = OrderedDict.fromkeys(list1)

>>> od2 = OrderedDict.fromkeys(list2)

>>> [k for k in od1 if k not in od2]

['7', '8']

>>> [k for k in od2 if k not in od1]

['5', '6']


查看完整回答
反對 回復(fù) 2021-05-25
?
守候你守候我

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊

您可以使用列表推導(dǎo):


list1 = ['1','2','3','4','7','8'] 

list2 = ['1','2','3','4','5','6']


set1 = set(list1)  # convert to set for faster membership testing

result = [x for x in list2 if x not in set1]

# result: ['5', '6']

但是,這將包括重復(fù)的元素:


>>> list1 = [1]

>>> list2 = [1, 2, 2]

>>> set1 = set(list1)

>>> [x for x in list2 if x not in set1]

[2, 2]

如果不需要重復(fù),只需將列表理解轉(zhuǎn)換為循環(huán)并跟蹤已遇到的所有元素:


list1 = [1] 

list2 = [1, 2, 2]


set1 = set(list1)

result = []


for x in list2:

    if x in set1:

        continue


    result.append(x)

    set1.add(x)


# result: [2]


查看完整回答
反對 回復(fù) 2021-05-25
?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

盡管此操作不使用-運(yùn)算符進(jìn)行設(shè)置,但它確實(shí)保留了原始列表的順序。


list1 = ['1','2','3','4','7','8'] 

list2 = ['1','2','3','4','5','6']

set_list2 = set(list2)

result = []

for item in list1:

    if not item in set_list2:

        result.append(item)

        set_list2.add(item) # to avoid duplicates in result

print(result)

# ['7', '8']


查看完整回答
反對 回復(fù) 2021-05-25
  • 3 回答
  • 0 關(guān)注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號