使用条件

时间:2017-03-03 17:38:21

标签: python arrays algorithm list

我需要在二维数组中找到索引,其中数字大于左右数字,小于上下数字,反之亦然。

我知道我需要两个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语句来检查大于问题。

1 个答案:

答案 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列表中的任何位置。)