给定一个列表,例如List="X","X","O","O",'O','O',我如何计算列表中有多少个“X”,然后从列表中减去那么多“O”。列表总是把所有的X放在前面,把所有的O放在最后。我想我可以这样做:
List=["X","X","O","O",'O','O']
ListCount=List.count("X")
del List[-(List2):0]我以为这会产生"X","X","O","O“,通过从-2:0中删除O,但绝对没有发生任何事情。在python中。
发布于 2013-03-28 06:41:36
正如我在评论中提到的,另一个数据结构在这里可能更有用,因为您不关心顺序:
data = {"X": 2, "O": 4}
data["O"] -= data["X"]如果您需要实际的列表,可以使用快速generator expression轻松创建
from itertools import chain, repeat
data_list = list(chain.from_iterable(repeat(key, count) for key, count in data.items()))或者,换一种方式:
from collections import Counter
data = Counter(data_list)发布于 2013-03-28 06:39:28
索引0对应于列表中的第一项,因此您的切片List[-2:0]表示从下一项到最后一项一直到第一项之前。因为这将是一个空范围,所以您不会从切片中获得任何内容(或者更确切地说,del语句不会删除任何内容)。
相反,省略切片的第二部分。Python会自动切到列表的末尾。
del List[-ListCount:]发布于 2013-03-28 06:38:59
假设我理解你的问题,你的切片应该是这样的:
del List[-ListCount:]https://stackoverflow.com/questions/15670850
复制相似问题