基于另一个数组中的内容删除一个数组中的项-python
我正在尝试创建一个函数,根据iss_应答数组中的内容从所有_卡中删除项目。我的iss_答案数组在我的程序中会经常更改,所以我不能只键入所有的卡片。删除“Professor Plum”、“Dining Room”、“Rope”基于另一个数组中的内容删除一个数组中的项-python,python,arrays,function,Python,Arrays,Function,我正在尝试创建一个函数,根据iss_应答数组中的内容从所有_卡中删除项目。我的iss_答案数组在我的程序中会经常更改,所以我不能只键入所有的卡片。删除“Professor Plum”、“Dining Room”、“Rope” iss_answer = ['Professor Plum','Dinning Room','Rope'] def computer_1(array): all_cards = ['professor plum','colonel mustard',
iss_answer = ['Professor Plum','Dinning Room','Rope']
def computer_1(array):
all_cards = ['professor plum','colonel mustard',
'mrs. white','mr. green','miss scarlet',
'mrs. peacock', 'revolver','wrench',
'candle stick','lead pipe','knife','rope',
'kitchen','hall','dinning room','lounge',
'study','billiard room',
'conservatory','library','ballroom']
all_cards.remove(iss_answer)
print all_cards
return all_cards
computer_1(iss_answer)
为什么不快速理解列表呢?如果需要,只需更改单词大小写以匹配两个列表,并在使用列表理解后去掉前导和尾随空格
iss_answer = ['Professor Plum','Dinning Room','Rope']
def computer_1(array):
all_cards = ['professor plum','colonel mustard',
'mrs. white','mr. green','miss scarlet',
'mrs. peacock', 'revolver','wrench',
'candle stick','lead pipe','knife','rope',
'kitchen','hall','dinning room','lounge',
'study','billiard room',
'conservatory','library','ballroom']
s = [i for i in all_cards if i.strip().lower() not in map(str.strip,map(str.lower,iss_answer))]
print s
return s
computer_1(iss_answer)
输出-
['colonel mustard', 'mrs. white', 'mr. green', 'miss scarlet', 'mrs. peacock', 'revolver', 'wrench', 'candle stick', 'lead pipe', 'knife', 'kitchen', 'hall', 'lounge', 'study', 'billiard room', 'conservatory', 'library', 'ballroom']
但如果您不需要维护输出列表中元素的顺序,因为集合是无序的数据结构,您可以使用前面提到的@bakkal和@Saif Asif的答案。更多信息请参见。为什么不快速列表理解-如果需要,只需更改单词大小写以匹配两个列表,并在所有使用列表理解后去掉前导和尾随空格
iss_answer = ['Professor Plum','Dinning Room','Rope']
def computer_1(array):
all_cards = ['professor plum','colonel mustard',
'mrs. white','mr. green','miss scarlet',
'mrs. peacock', 'revolver','wrench',
'candle stick','lead pipe','knife','rope',
'kitchen','hall','dinning room','lounge',
'study','billiard room',
'conservatory','library','ballroom']
s = [i for i in all_cards if i.strip().lower() not in map(str.strip,map(str.lower,iss_answer))]
print s
return s
computer_1(iss_answer)
输出-
['colonel mustard', 'mrs. white', 'mr. green', 'miss scarlet', 'mrs. peacock', 'revolver', 'wrench', 'candle stick', 'lead pipe', 'knife', 'kitchen', 'hall', 'lounge', 'study', 'billiard room', 'conservatory', 'library', 'ballroom']
但如果您不需要维护输出列表中元素的顺序,因为集合是无序的数据结构,您可以使用前面提到的@bakkal和@Saif Asif的答案。更多信息请访问。用于降低复杂性
difference = list(set(all_cards) - set(iss_answer))
用于降低复杂性
difference = list(set(all_cards) - set(iss_answer))