Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表:计数和删除_Python_Python 3.x - Fatal编程技术网

Python 列表:计数和删除

Python 列表:计数和删除,python,python-3.x,Python,Python 3.x,给定一个列表,例如list=[“X”、“X”、“O”、“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中。假设我理解您的问

给定一个列表,例如list=[“X”、“X”、“O”、“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中。

假设我理解您的问题,您的切片应该如下所示:

del List[-ListCount:]

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

del List[-ListCount:]

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

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

del List[-ListCount:]

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

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

del List[-ListCount:]

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

data = {"X": 2, "O": 4}
data["O"] -= data["X"]
如果您需要实际列表,可以使用以下快捷方式轻松创建:

或者,换一种方式:

from collections import Counter
data = Counter(data_list)

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

data = {"X": 2, "O": 4}
data["O"] -= data["X"]
如果您需要实际列表,可以使用以下快捷方式轻松创建:

或者,换一种方式:

from collections import Counter
data = Counter(data_list)

您的方法似乎有效-在您的示例中不应该使用List2而不是ListCount。也许它不太像python,它只在您所述的条件下工作,但它工作:)


您的方法似乎有效-在您的示例中不应该使用List2而不是ListCount。也许它不太像python,它只在您所述的条件下工作,但它工作:)

那么:

List = ["X","X","O","O",'O','O']
xCount = List.count('X')
List = List[:-xCount]
那么:

List = ["X","X","O","O",'O','O']
xCount = List.count('X')
List = List[:-xCount]

值得注意的是,如果您不关心顺序(正如您所说,它们总是以相同的顺序排列,必须是正确的),为什么不存储每个的编号,这使得这很简单?只是一个小问题(我不记得它是否在,但它应该在),但尽量避免为内置变量命名,即使你改变了大写字母。不要使用
List
,而是尝试
my\u List
first\u List
或类似的方法。这样以后一个小的大写错误就不会给你带来奇怪的行为,比如重写内置函数。@MattDMo它在PEP-8中-
大写字母
是为类名保留的。这确实值得遵循,因为它使代码更具可读性-见鬼,即使使用它来突出显示您的代码-它假定
CapWords
中的任何内容都是一个类,并将其突出显示为浅蓝色。值得注意的是,如果您不关心顺序(正如您所说,它们总是以相同的顺序,必须是正确的),为什么不存储每个变量的编号,这使得这很简单?只是一个小问题(我不记得它是否在,但它应该在),但尽量避免为内置变量命名,即使您正在更改大小写。不要使用
List
,而是尝试
my\u List
first\u List
或类似的方法。这样以后一个小的大写错误就不会给你带来奇怪的行为,比如重写内置函数。@MattDMo它在PEP-8中-
大写字母
是为类名保留的。这确实值得遵循,因为它使代码更具可读性-见鬼,即使使用它来突出显示您的代码-它假定
CapWords
中的任何内容都是一个类,并将其突出显示为浅蓝色。如果数据最初是列表形式,请通过执行
集合来转换为计数。计数器[原始列表]
。如果数据最初是列表形式,则通过收集将其转换为计数。计数器[原始列表]。