簡體   English   中英

Python:根據另一個列表中的元素刪除列表元素

[英]Python: Deleting a list element based on elements from another list

我這里有兩個清單。 我正在重排列表i ,檢查它是第一個元素,然后從列表j刪除相應的元素,例如,如果在重排之后i[0] == 3 ,那么我想從列表' j刪除元素3。

i = ['a','b','c','d','e','f','g','h']
random.shuffle(i)

j = [1,2,3,4,5,6,7,8]

if i[0] == 'a':
    del j[0]
elif i[0] == 'b':
    del j[1]
elif i[0] == 'c':
    del j[2]
elif i[0] == 'd':
    del j[3]
elif i[0] == 'e':
    del j[4]
elif i[0] == 'f':
    del j[5]
elif i[0] == 'g':
    del j[6]
elif i[0] == 'h':
    del j[7]

有沒有一種方法可以執行此任務而不列出類似if的語句? 就目前而言,如果i[0] == 6 ,那么原則上需要檢查幾個if語句,這是在浪費處理能力。

謝謝,史蒂夫

你可以做

j.remove(i[0])

從列表j中刪除值為i [0]的元素。

[編輯]更新:

import random

i = ['a','b','c','d','e','f','g','h']
k=i[:]

random.shuffle(i)

print i
print k
print j

j = [1,2,3,4,5,6,7,8]
print i[0]
print k.index(i[0])
del j[k.index(i[0])]
print j
i = [a,b,c,d,e,f,g,h]
base = [a,b,c,d,e,f,g,h]
random.shuffle(i)

j = [1,2,3,4,5,6,7,8]

del j[base.index(i[0])]

您可以使用索引方法執行刪除j項目:

i = [a,b,c,d,e,f,g,h]
random.shuffle(i)

j = [1,2,3,4,5,6,7,8]
del j[j.index(i[0])]

random.shuffle(i)
del j[j.index(i[0])]

如果經過洗牌,i [0] == 3,那么我想從列表'j'中刪除元素3。

如果這只是您要完成的工作,那么就去買j.remove(i[0])

或者,如果您堅持使用deldel j[i[0]] ,那么我不會(僅當您想讓代碼閱讀者清楚該變量將不再在程序中使用時,才使用del在您的代碼中更進一步。在這里,它可以工作,但list.remove更好地向讀者表達您的意圖。)

讀了你可以用列表做了Python文檔中還有什么在列表, 在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM