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])]