首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列表:计数和删除

列表:计数和删除
EN

Stack Overflow用户
提问于 2013-03-28 06:35:22
回答 5查看 80关注 0票数 0

给定一个列表,例如List="X","X","O","O",'O','O',我如何计算列表中有多少个“X”,然后从列表中减去那么多“O”。列表总是把所有的X放在前面,把所有的O放在最后。我想我可以这样做:

代码语言:javascript
运行
复制
List=["X","X","O","O",'O','O']
ListCount=List.count("X")
del List[-(List2):0]

我以为这会产生"X","X","O","O“,通过从-2:0中删除O,但绝对没有发生任何事情。在python中。

EN

回答 5

Stack Overflow用户

发布于 2013-03-28 06:41:36

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

代码语言:javascript
运行
复制
data = {"X": 2, "O": 4}
data["O"] -= data["X"]

如果您需要实际的列表,可以使用快速generator expression轻松创建

代码语言:javascript
运行
复制
from itertools import chain, repeat
data_list = list(chain.from_iterable(repeat(key, count) for key, count in data.items()))

或者,换一种方式:

代码语言:javascript
运行
复制
from collections import Counter
data = Counter(data_list)
票数 3
EN

Stack Overflow用户

发布于 2013-03-28 06:39:28

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

相反,省略切片的第二部分。Python会自动切到列表的末尾。

代码语言:javascript
运行
复制
del List[-ListCount:]
票数 1
EN

Stack Overflow用户

发布于 2013-03-28 06:38:59

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

代码语言:javascript
运行
复制
del List[-ListCount:]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15670850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档