gpt4 book ai didi

python过滤器抛出奇怪的错误

转载 作者:太空宇宙 更新时间:2023-11-04 03:35:30 26 4
gpt4 key购买 nike

我有一个列表和一个过滤器,如下所示:

matrix = [['X', 'X', 'X'], ['X', 'X', 'X'], ['X', 'X', 'X'], ['O', 'X', 'X'], ['O', 'X', 'X']] 
s = list(zip(*matrix)[0])

print s[s != 'X']

当我运行它时,它返回 'X'

如果修改为:

matrix = [['X', 'X', 'X'], ['O', 'X', 'X'], ['X', 'X', 'X'], ['O', 'X', 'X'], ['O', 'X', 'X']] 
s = list(zip(*matrix)[0])

print s[s != 'X']

然后返回 'O'

我用谷歌搜索/堆栈搜索它死了,但似乎无法找到这是怎么回事。我在这里缺少什么使其不排除所有“X”值?

最佳答案

代码没有任何问题,它只是给出了正确的值。

当你运行第一个代码时,

>>> matrix = [['X', 'X', 'X'], ['X', 'X', 'X'], ['X', 'X', 'X'], ['O', 'X', 'X'], ['O', 'X', 'X']] 
>>> s = list(zip(*matrix)[0])

s的值是一个列表,

>>> print s
['X', 'X', 'X', 'O', 'O']

现在,当您将 s 与表示不等式的字面值进行比较时,它显然给您 True

>>> s!= "X"
True

这个 True 在内部被视为 s 的索引,并被转换为 1:

>>> True == 1
True
>>> s[s!="X"]
'X'
>>> s[1]
'X'

第二种情况,s的值不同:

>>> matrix = [['X', 'X', 'X'], ['O', 'X', 'X'], ['X', 'X', 'X'], ['O', 'X', 'X'], ['O', 'X', 'X']] 
>>> s = list(zip(*matrix)[0])
>>> print s
['X', 'O', 'X', 'O', 'O']
>>> s[1]
'O'

因此 "O" 被打印出来。

关于python过滤器抛出奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29285629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com