我试图从有问题的列表中删除某个字符串

时间:2015-03-03 14:51:42

标签: python python-2.7

inventory = ['Sword','meat','meat']

肉一旦你使用它就会治愈你,需要一个。如何通过使用inventory.remove('meat')

之类的东西来消除它

3 个答案:

答案 0 :(得分:1)

  

如何通过使用inventory.remove('meat')等东西来消除它?

是的,你完全正确。 inventory.remove('meat')做你想做的事。

>>> inventory = ["sword", "meat", "meat"]
>>> inventory.remove("meat")
>>> inventory
['sword', 'meat']

答案 1 :(得分:1)

根据帮助文本(help(list.remove),强调我的):

  

L.remove(value) - 删除value

第一次出现

因此,您当前的代码没有问题:

>>> l = ['sword', 'meat', 'meat']
>>> l.remove('meat')
>>> l
['sword', 'meat']

话虽如此,您的广告资源的更好实施方式是dictionary {item: count}

>>> d = {'sword': 1, 'meat': 2}
>>> d['meat'] -= 1
>>> d
{'meat': 1, 'sword': 1}

您必须添加额外的检查(例如if d['meat']:)以确保在减去之前计数非零,但这样可以更轻松地管理大量不同的项目。您可以使用collections.defaultdict进一步简化代码。

答案 2 :(得分:0)

我试过这个例子并且有效:

inventory = ['Sword','Meat','meat']

long_sentence = "Meat heals you so once you use it it takes one away"
sent_list = long_sentence.split()

print "[before:]",inventory

for i in inventory:
    if i in long_sentence:
        inventory.remove(i)

print "[after:]",inventory

我认为您在列出大写"Meat"和小写字母"meat"工作时遇到问题