Найти - Пользователи
Полная версия: Наименьшее число в столбиках двумерного массива
Начало » Python для новичков » Наименьшее число в столбиках двумерного массива
1
rater
Здравствуйте, передо мной стоит следующая задача: нужно построить двумерный массив и найти наименьшее число в каждом из столбиков полученного массива.
Вот такой код создает массив и выводит его.
for i in range(a):
    for j in range(b):
        dict[i,j] = int_error("Введите цифру массива: ")
for i in range(a):
    print(*[dict[i,j] for j in range(b)])
Подскажите, пожалуйста, как можно подсчитать наименьшее число в каждом столбике и вывести их
wiygn
Вряд ли каноничный вариант, но зато очевидный и наглядный. Поместить столбцы в отдельные списки и вывести минимальное значение.
a = [
	[0, 9],
	[1, 8],
	[2, 7],
	[3, 6],
	[4, 5],
]
b = []
c = []
for i in range(len(a)):
	b.append(a[i][0])
	c.append(a[i][1])
print (min(b), min(c))
>>> 0 5
doza_and
Классика:
>>> a = [	[0, 9],	[1, 8],	[2, 7],	[3, 6],	[4, 5]]
>>> print map(min, zip(*a))
[0, 5]
Подлиннее но универсальнее:
>>> [min(v) for v in zip(*a)]
[0, 5]
А лучше всего не изобретать и пользоваться готовым:
>>> import numpy as np
>>> np.min(a,0)
array([0, 5])
Shaman
a = [[0, 9],
     [1, 8],
     [2, 7],
     [3, 6],
     [4, 5]]
def mymin(lol, column):
    return min(lol, key=lambda r:r[column])[column]
print(mymin(a, 0), mymin(a, 1))
rater
Простите, я вчера засиделся за кодом и не проверил толком, что отправил. Заполнять массив должен пользователь с клавиатуры. Так же в этой строке dict = int_error(“Введите цифру массива: ”)
int_error() - это самописная функция для проверки ввода, воспринимать ее стоит как input()

Скину код еще раз, но полностью
a = int_error("Введите количество строк: ")
b = int_error("Введите количество колонок: ")
dict = {}
for i in range(a):
    for j in range(b):
        dict[i,j] = int_error("Введите цифру массива: ")
for i in range(a):
    print(*[dict[i,j] for j in range(b)])
print(*[dict[max(i),max(j)] for j in range(b)])

Еще раз прошу прощения за то, что толком не объяснил задачу и напрасно напряг wiygn, doza_and, Shaman
py.user.next
rater
dict[i,j]
тут у тебя сразу две ошибки: dict - зарезервированное имя (конструктор словаря);
правильное обращение
[i][j]
тогда как
[i, j]
вообще не сработает, так как i,j - это кортеж из двух элементов (а в C это была бы вообще операция “запятая”)

да и вообще, с чего там в словаре колонки появились ?
для этого используется список списков обычно
rater
py.user.next
для этого используется список списков обычно
А как реализовать список списков?
Shaman
rater
А как реализовать список списков?
примерно так:
dct = []
for _ in range(a):
    dct.append([0] * b)
rater
Shaman
примерно так: …
Понял, спасибо.
Может, еще кто-то может подсказать как найти наименьшее число в любом из способов, при том, что выводить числа нужно как в моем примере?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB