Python:根据另一个列表中的元素删除列表元素

时间:2016-04-30 10:59:18

标签: 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]
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语句,原则上是浪费处理能力。

谢谢, 史蒂夫

4 个答案:

答案 0 :(得分:1)

你可以做到

j.remove(i[0])

从列表j中删除值为[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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您可以使用index method删除#!/usr/bin/expect -f spawn xmacrorec2 -k 27 set timeout -1 while { 1 } { expect "ButtonPress 1" system beep -f 3000 -l 50 & } 项:

j

答案 3 :(得分:0)

  

如果在shuffle之后,我[0] == 3,那么我想从列表'j'中删除元素3。

如果这是你想要完成的所有事情,那就去找j.remove(i[0])

之类的东西吧

或者,如果你坚持使用deldel j[i[0]],我不会(当你想向你的代码的读者说明这个变量将不再是在你的程序中进一步使用你的代码。这里有效,但list.remove更能表达你对读者的意图。)

阅读有关列表中的python文档中的列表的其他内容,here