我试图找出给定行或2D数组的给定列中是否存在指定值。
函数 existsInRowOrCol 使用 in 运算符,这显然不适用于混合类型的嵌套列表。
如何解决这个问题?
import numpy as np
field = np.array([['.','.','.',8,'.','.',3,'.',4], #0
['.','.',6,'.','.','.','.',7,'.'], #1
[2,'.','.','.',1,'.','.','.','.'], #2
['.',8,'.',3,'.',4,'.',6,'.'], #3
[1,'.','.','.',5,'.','.',9,'.'], #4
[5,'.','.','.',8,'.',7,'.','.'], #5
['.',9,'.',1,'.',8,'.',5,'.'], #6
[3,'.','.',6,'.','.',8,'.','.'], #7
['.','.',8,'.',2,7,'.',1,'.'], #8
])
def existsInRowOrCol(entry, r, c):
row = field[r,:]
print(row)
if entry in row:
return True
col = field[:,c]
print(col)
if entry in col:
return True
return False
print(existsInRowOrCol(8, 0, 0))
最后一个命令打印出false,但它应该是true。
注意:如果我用零替换点,它会起作用。
答案 0 :(得分:0)
如果你的参赛作品引用了,那对我有用:
>>> a = numpy.array(['.','.','8'])
>>> a
array(['.', '.', '8'],
dtype='|S1')
>>> row = a[:]
>>> entry = 8
>>> if entry in row:
... print 'true'
...
>>> entry = '8'
>>> if entry in row:
... print 'true'
...
true
请确保以单引号传递条目。