首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python -如何查找多维数组中是否存在项?

Python -如何查找多维数组中是否存在项?
EN

Stack Overflow用户
提问于 2018-07-17 04:33:58
回答 4查看 12.1K关注 0票数 4

我尝试了几种方法,但似乎都不适合我。

代码语言:javascript
复制
board = [[0,0,0,0],[0,0,0,0]]

if not 0 in board:
     # the board is "full"

然后我试着:

代码语言:javascript
复制
if not 0 in board[0] or not 0 in board[1]:
    # the board is "full"

这些方法都不起作用,尽管第二种方法通常会让数组填满更多。(我编写了代码来随机填充数组)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-07-17 04:39:04

您需要遍历列表的所有索引,以查看某个元素是否为其中一个嵌套列表中的值。您可以简单地迭代内部列表并检查您的元素是否存在,例如:

代码语言:javascript
复制
if not any(0 in x for x in board):
    pass  # the board is full

每当遇到包含0的元素时,使用any()将充当临时停靠点,因此您不需要遍历其余的元素。

票数 6
EN

Stack Overflow用户

发布于 2018-07-17 04:40:45

我会试着解决你做错了的事情:

if not 0 in board[0] or not 0 in board[1]:这几乎是正确的-但您应该使用and,因为要被视为已满,两个主板不能同时为0。

一些选项:

代码语言:javascript
复制
if not 0 in board[0] and not 0 in board[1]: # would work

if 0 not in board[0] and 0 not in board[1]: # more idiomatic

if not(0 in board[0] or 0 in board[1]): # put "not" in evidence, reverse logic

if not any(0 in b for b in board): # any number of boards
票数 2
EN

Stack Overflow用户

发布于 2018-07-17 04:42:27

如果你可以在标准库之外使用工具,numpy是处理多维数组的最佳方式。

代码语言:javascript
复制
board = [[0,0,0,0],[0,0,0,0]]
board = np.array(board)
print(0 in board)

输出:

代码语言:javascript
复制
True
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51369718

复制
相关文章

相似问题

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