Форум сайта python.su
0
Здравствуйте, передо мной стоит следующая задача: нужно построить двумерный массив и найти наименьшее число в каждом из столбиков полученного массива.
Вот такой код создает массив и выводит его.
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)])
Офлайн
2
Вряд ли каноничный вариант, но зато очевидный и наглядный. Поместить столбцы в отдельные списки и вывести минимальное значение.
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
Отредактировано wiygn (Май 18, 2013 04:59:47)
Офлайн
253
Классика:
>>> 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])
Отредактировано doza_and (Май 18, 2013 08:40:51)
Офлайн
88
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))
Офлайн
0
Простите, я вчера засиделся за кодом и не проверил толком, что отправил. Заполнять массив должен пользователь с клавиатуры. Так же в этой строке 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)])
Отредактировано rater (Май 18, 2013 12:52:34)
Офлайн
857
raterтут у тебя сразу две ошибки: dict - зарезервированное имя (конструктор словаря);dict[i,j]
[i][j]
[i, j]
Отредактировано py.user.next (Май 18, 2013 13:34:39)
Офлайн
0
py.user.nextА как реализовать список списков?
для этого используется список списков обычно
Офлайн
88
raterпримерно так:
А как реализовать список списков?
dct = [] for _ in range(a): dct.append([0] * b)
Отредактировано Shaman (Май 18, 2013 20:02:22)
Офлайн
0
ShamanПонял, спасибо.
примерно так: …
Офлайн