Уведомления

Группа в Telegram: @pythonsu

#1 Май 17, 2013 22:55:44

rater
Зарегистрирован: 2013-05-17
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Наименьшее число в столбиках двумерного массива

Здравствуйте, передо мной стоит следующая задача: нужно построить двумерный массив и найти наименьшее число в каждом из столбиков полученного массива.
Вот такой код создает массив и выводит его.

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 Май 18, 2013 01:35:42

wiygn
Зарегистрирован: 2012-08-19
Сообщения: 52
Репутация: +  2  -
Профиль   Отправить e-mail  

Наименьшее число в столбиках двумерного массива

Вряд ли каноничный вариант, но зато очевидный и наглядный. Поместить столбцы в отдельные списки и вывести минимальное значение.

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)

Офлайн

#3 Май 18, 2013 08:30:02

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Наименьшее число в столбиках двумерного массива

Классика:

>>> 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)

Офлайн

#4 Май 18, 2013 09:43:44

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Наименьшее число в столбиках двумерного массива

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))

Офлайн

#5 Май 18, 2013 12:51:33

rater
Зарегистрирован: 2013-05-17
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Наименьшее число в столбиках двумерного массива

Простите, я вчера засиделся за кодом и не проверил толком, что отправил. Заполнять массив должен пользователь с клавиатуры. Так же в этой строке 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

Отредактировано rater (Май 18, 2013 12:52:34)

Офлайн

#6 Май 18, 2013 13:30:19

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Наименьшее число в столбиках двумерного массива

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

да и вообще, с чего там в словаре колонки появились ?
для этого используется список списков обычно



Отредактировано py.user.next (Май 18, 2013 13:34:39)

Офлайн

#7 Май 18, 2013 19:22:11

rater
Зарегистрирован: 2013-05-17
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Наименьшее число в столбиках двумерного массива

py.user.next
для этого используется список списков обычно
А как реализовать список списков?

Офлайн

#8 Май 18, 2013 20:01:34

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Наименьшее число в столбиках двумерного массива

rater
А как реализовать список списков?
примерно так:
dct = []
for _ in range(a):
    dct.append([0] * b)

Отредактировано Shaman (Май 18, 2013 20:02:22)

Офлайн

#9 Май 18, 2013 20:15:15

rater
Зарегистрирован: 2013-05-17
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Наименьшее число в столбиках двумерного массива

Shaman
примерно так: …
Понял, спасибо.
Может, еще кто-то может подсказать как найти наименьшее число в любом из способов, при том, что выводить числа нужно как в моем примере?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version