繁体   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