我需要在二维数组中找到索引,其中数字大于左右数字,小于上下数字,反之亦然。
我知道我需要两个for循环,一个用于行的第一列,我给了数字x,我需要将它与2d数组中的数字进行比较以找到索引。
list = [[1,4,6,7,8],
[2,4,6,7,8],
[1,4,6,7,8],
[1,4,6,7,8],
[2,4,6,7,8],
[6,4,6,7,8]]
如果我给了4作为x我需要在2d列表中找到左,右,上和下的索引,反之亦然,其他数字大于或小于4.有人可以提供一个溶液
list = [[1, 4, 6, 7, 8],
[2, 4, 6, 7, 8],
[1, 4, 6, 7, 8],
[1, 4, 6, 7, 8],
[2, 4, 6, 7, 8],
[6, 4, 6, 7, 8]]
x = [x for x in list if 4 in x][0]
print('The index is (%d,%d)' % (list.index(x), x.index(4)))
通过该尝试,它只会给我第一个索引,但是我需要检查整个数组并使用if语句来检查大于问题。
答案 0 :(得分:0)
这会吗?...
x = int(input('Enter x: '))
data = [[1, 4, 6, 7, 8],
[2, 4, 6, 7, 8],
[1, 4, 6, 7, 8],
[1, 4, 6, 7, 8],
[2, 4, 6, 7, 8],
[6, 4, 6, 7, 8]]
dataTranspose = list(zip(*data))
for each_row_number in range(0, len(data)):
tempRow = list(enumerate(data[each_row_number]))
maxIndex, maxVal = max(tempRow, key=lambda eachPair: eachPair[1])
minIndex, minVal = min(tempRow, key=lambda eachPair: eachPair[1])
if x == maxVal:
if x == min(dataTranspose[maxIndex]):
print(' found another at: (' + str(each_row_number) + ', ' + str(maxIndex) + ')')
elif x == minVal:
if x == max(dataTranspose[minIndex]):
print(' found another at: (' + str(each_row_number) + ', ' + str(minIndex) + ')')
示例运行:
Enter x: 8
found another at: (0, 4)
found another at: (1, 4)
found another at: (2, 4)
found another at: (3, 4)
found another at: (4, 4)
found another at: (5, 4)
示例运行:
Enter x: 4
found another at: (5, 1)
示例运行:
Enter x: 6
(对于x = 6,没有结果出现在第3个示例中,给定条件中的任何一个都不满足2d列表中的任何位置。)