Найти - Пользователи
Полная версия: Матрицы в Python по условию
Начало » Python для новичков » Матрицы в Python по условию
1 2
marianka
Привет, уважаемые форумчане.

Никогда не прибегала к помощи форумов, но вот в случае Пайтона хочу попросить у вас помощи.

Осваиваю данный язык, но возникли затруднения с одним из заданий. Нужно сформировать матрицу по определённому условию, и отсортировать её.

Задание выглядит так:

Получить матрицу А (m*n) образованную по соответствующему зако­ну: (i+j)/tg(j) размерностью 6x6, отсортировав столбцы по возрастанию.

Три дня возвращаюсь к этой задаче, но хоть убей - не получается…

Если кто-то поможет - куча благодарностей ^^
FishHook
Результат мучений показывайте, должно же было у вас что-то родиться за три дня размышлений.
marianka
FishHook
Результат мучений показывайте, должно же было у вас что-то родиться за три дня размышлений.

Получилось только на проклятом паскале) Были попытки формировать матрицу построчно, через append, что-то формата:

import math
a=[]
i=1
j=1
ai=(i+j)/math.tan(j)
a.append(ai)

но понимаю, что вообще не то, и не туда

FishHook
Ок, как вы себе представляете матрицу в питоне?
marianka
FishHook
Ок, как вы себе представляете матрицу в питоне?
двумерный массив, как и везде. Список элементов “в длинну и ширину”, скажем так.
FishHook
В терминологии питона вам нужен список списков.
lst = [[1, 2, 3],
         [2, 4, 6],
         [4, 6, 7]
]
Изначально lst - пустой список.
Нужен двойной цикл по i и j, во внешнем цикле создаёте новый пустой список, во вложенном добавляете в него рассчитанные значения, по завершению внутреннего цикла добавляете список к lst.
Shaman
marianka
двумерный массив, как и везде.
На всякий случай: массив любой размерности можно оформить в виде одномерного массива. Но я не призываю делать так сейчас.
py.user.next
>>> import math
>>> 
>>> def create_matrix(rows, cols):
...     f = lambda x, y: (x + y) / math.tan(y)
...     out = [[f(i + 1, j + 1) for j in range(cols)]
...            for i in range(rows)]
...     return out
... 
>>> mtx = create_matrix(6, 6)
>>> mtx
[[1.2841852318686613, -1.3729726630808574, -28.061010205738135, 4.318455772253084, -1.774877493196473, -24.054471029260895], [1.926277847802992, -1.830630217441143, -35.07626275717267, 5.1821469267037, -2.070690408729219, -27.490824033441022], [2.5683704637373226, -2.288287771801429, -42.0915153086072, 6.045838081154317, -2.366503324261964, -30.927177037621153], [3.2104630796716536, -2.745945326161715, -49.106767860041735, 6.909529235604934, -2.6623162397947095, -34.363530041801276], [3.852555695605984, -3.2036028805220007, -56.12202041147627, 7.77322039005555, -2.9581291553274554, -37.79988304598141], [4.494648311540315, -3.661260434882286, -63.1372729629108, 8.636911544506168, -3.2539420708602007, -41.23623605016154]]
>>>
marianka
py.user.next

А можно пояснить лямбду? Никогда не использовала, а в мануалах как-то не очень подробно освещено, или я не догоняю просто…


А так, всем спасибо за участие, код выше рабочий, буду пробовать свои варианты реализации.
FishHook
Лямбда - это короткая безымянная функция, типа как колбэк в джаваскрипте
$.each(collection, function(i, e){ 
    log(i, e)
})
Здесь function по сути лямбда-функция.
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