列表:计数和删除

2024-04-20 03:21:29 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个列表,例如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]

我以为从-2:0中删除O会产生[“X”,“X”,“O”,“O”],但绝对没有发生什么。在python中。你知道吗


Tags: 列表countlistdellist2listcount
3条回答

假设我理解你的问题,你的切片应该是这样的:

del List[-ListCount:]

索引0对应于列表中的第一个项目,因此切片List[-2:0]表示从下一个到最后一个到第一个之前。因为这将是一个空范围,所以您不会从切片中得到任何内容(或者更确切地说,您的del语句不会删除任何内容)。你知道吗

相反,去掉切片的第二部分。Python将自动切到列表的末尾。你知道吗

del List[-ListCount:]

正如我在评论中提到的,另一种数据结构在这里可能更有用,因为您不关心顺序:

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)

相关问题 更多 >