Как найти максимальный элемент массива В и заменить им минимальный элемент массива А?

A = [[9, 2, 3],
     [4, 5, 6],
     [7, 8, 1]]
B = [1,2,3,4,5,6,78,0]

max = B[0]
min = A[0][0]

for i in range(len(B)):
    if B[i] > max:
        max = B[i]

for i in range(len(A)):
    for j in range(len(A[0])):
        if A[i][j] < min:
            min = A[i][j]

min = max  # здесь хочу присвоить минимальному элементу максимальный, но не получается
for i in A:
    print(i)

Ответы (5 шт):

Автор решения: dath.vg

Т.к min и max - переменные, они ссылаются на значения, а не на элементы массива. Т.е лучшим решением будет сохранять не не значения, а индексы чисел.

Пример:

A = [[9, 2, 3],  # Your arrays
      [4, 5, 6],
      [7, 8, 1]]
B = [1,2,3,4,5,6,78,0]


max = 0
min = (0, 0)
for i in range(len(B)):
    if B[i] > B[max]:  # Use index instead of value 
        max = i
for i in range(len(A)):
    for j in range(len(A[0])):
        if A[i][j] < A[min[0]][min[1]]:  # Use index instead of value 
            min = (i, j)
A[min[0]][min[1]] = B[max] # Replacing
for i in A:
    print(i)
→ Ссылка
Автор решения: Jack_oS
a_list = [
    [9, 2, 3],
    [4, 5, 6],
    [7, 8, 1]
]
b_list = [1, 2, 3, 4, 5, 6, 78, 0]

индекс наибольшего элемента списка b_list:

index_b_max = b.index(max(b))

индекс наименьшего элемента списка списков a_list:

a_min = a_list[0][0]
index_a_min = 0, 0

for i, sublist in enumerate(a_list):
    for j, el in enumerate(sublist):
        if el < a_min:
            a_min = el
            index_a_min = i, j

поменять местами:

a_list[index_a_min[0]][index_a_min[1]], b_list[index_b_max] = b_list[index_b_max], a_list[index_a_min[0]][index_a_min[1]]

результат:

>>> a_list
[[9, 2, 3], [4, 5, 6], [7, 8, 78]]
>>> b_list
[1, 2, 3, 4, 5, 6, 1, 0]

UPD сам не знаю, откуда я взял "поменять местами" в условии?..
Просто значение максимального элемента b_list записать на место минимального в a_list:

a_list[index_a_min[0]][index_a_min[1]] = max(b_list)
→ Ссылка
Автор решения: entithat
a = [
    [9, 2, 3],
    [4, 5, 6],
    [7, 8, 1]
]
b = [1, 2, 3, 4, 5, 6, 78, 0]

m = min(a, key=min) # ищем по самому маленькому значению
i = a.index(m)      # берём индекс по ряду
j = m.index(min(m)) # берём индекс по колонке

a[i][j] = max(b)    # заменяем на максимальное
→ Ссылка
Автор решения: GrAnd

Ну и ещё вариант. Нечто среднее между ответом @entithat и @Jack_oS.

A = [[9, 2, 3],
     [4, 5, 6],
     [7, 8, 1]]
B = [1,2,3,4,5,6,78,0]

min_a, r, c = min((el,ri,ci) for ri,row in enumerate(A) for ci,el in enumerate(row))
A[r][c] = max(B)
→ Ссылка
Автор решения: Andy Pavlov

Еще можно такой вариант, если нужна только замена без сохранения индексов

A = [[9, 2, 3],
     [4, 5, 6],
     [7, 8, 1]]
B = [1,2,3,4,5,6,78,0]

a_min = min([_ for r in A for _ in r])
b_max = max(B)
A = [[b_max if _ == a_min else _ for _ in r] for r in A]

В принципе все можно и в одну строку, но тогда будем на каждом цикле пересчитывать минимумы и максимумы.

→ Ссылка