Python:基于另一个列表中的元素删除列表元素

Python:基于另一个列表中的元素删除列表元素,python,Python,我这里有两张清单。我正在洗牌列表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] el

我这里有两张清单。我正在洗牌列表
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[0]==3,那么我想从列表“j”中删除元素3

如果这就是您想要完成的全部任务,只需执行类似
j.remove(i[0])

或者,如果你坚持使用
del
delj[i[0]]
,我不会这么做(只有当你想让代码的读者明白这个变量将不再在你的程序中使用时,才使用del。在这里,它起作用,但是
列表。删除
更好地向读者表达你的意图。)


在列表上的python文档中,阅读有关列表的其他操作。

您可以使用以下命令执行删除
j
项的操作:


这不是很清楚。所有if/elif条件都相同。“a”是字母还是变量?对于一个字母,你需要写“a”,对于一个变量,你需要定义它。它是一个变量,它被定义了,只是没有显示出来。那么,如果多个变量具有相同的值,会发生什么呢?如果你说i[0]==a,你是在比较值,而不是变量名。这不是我的实际代码,我只需要知道基本原理。这本来是可行的,但我原来的帖子不正确:我现在更新了它。elif语句现在不同了。我尝试再次使用您的方法,只使用I=[(4.5,5.6],[4.3,5.3]和j as[(3.2,1.5],[4.3,5.2])。我不想删除任何元素,我想基于I返回相应的j元素(在洗牌之后)。k=i[:]不适用于这些列表。你知道为什么吗?这本来是可行的,但我原来的帖子是不正确的。我现在已经更新了它,elif语句现在不同了。抱歉。我正在尝试再次使用您的方法,仅使用I=[(4.5,5.6],[4.3,5.3]和j as[(3.2,1.5],[4.3,5.2])。我不想删除任何元素,我想基于I返回相应的j元素(在洗牌之后)。k=i[:]不适用于这些列表。你知道为什么吗?
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])]
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])]