2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3, 4, 5, 6 ... 11  След.
 
 Re: Курс по Python
Сообщение11.06.2018, 16:51 
Munin в сообщении #1319027 писал(а):
То есть, получается, сделать массив $9\times 9,$ а потом "вырастить" его до $10\times 10$ не получится?

При большом желании - можно:
Используется синтаксис Python
mass=[[0]*9 for i in range(9)]
for i in range(9):
    mass[i].append(1)
mass.append([1]*10)


-- 11 июн 2018, 23:23 --

kotenok gav в сообщении #1318961 писал(а):
Числа, строки, булеаны, массивы, словари, множества, None.

Еще байты.

 
 
 
 Re: Курс по Python
Сообщение11.06.2018, 16:53 
Munin в сообщении #1319018 писал(а):
Я пока не знаю, для чего он хорош

Он хорош как скриптовый язык, для которого доступна куча математических и не только математических пакетов. Соответственно, кроме языка нужно знать и про эти пакеты. И, даже, важнее знать пакеты, чем тонкости языка.

Например:

Код:
from sympy import *
x = symbols('x')
print(integrate(sqrt(x), (x, 0, 1)))

 
 
 
 Re: Курс по Python
Сообщение11.06.2018, 16:54 
Аватара пользователя

(Оффтоп)

arseniiv в сообщении #1319030 писал(а):
и буду долго ковыряться в документации.

Ковыряние в документации всегда составляет $>50\,%$ трудозатрат программиста :-)


-- 11.06.2018 16:55:44 --

kotenok gav в сообщении #1319031 писал(а):
Munin в сообщении #1319027 писал(а):
То есть, получается, сделать массив $9\times 9,$ а потом "вырастить" его до $10\times 10$ не получится?

При большом желании - можно:
Используется синтаксис Python
mass=[[0]*9 for i in range(9)]
for i in range(9):
    mass[i].append(1)
mass.append([1]*10)

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

-- 11.06.2018 16:59:43 --

realeugene в сообщении #1319033 писал(а):
Он хорош как скриптовый язык, для которого доступна куча математических и не только математических пакетов.

Каких не математических?

Математика: абстрактная алгебра, диф. геометрия, мат. физика, численные методы?
Например, можно ли найти все подгруппы $S_4$? Можно ли численно решить уравнение Янга-Миллса?

 
 
 
 Re: Курс по Python
Сообщение11.06.2018, 17:13 
Munin в сообщении #1319034 писал(а):
То есть, двумерный массив не обязан быть прямоугольным?

Обязан.

 
 
 
 Re: Курс по Python
Сообщение11.06.2018, 17:14 
Munin в сообщении #1319034 писал(а):
Например, можно ли найти все подгруппы $S_4$? Можно ли численно решить уравнение Янга-Миллса?
Без понятия. Это не система компьютерной алгебры, но язык много лет был популярен среди научных работников, и под него много чего написали полезного. Часто его можно использовать как легко доступную и бесплатную альтернативу Матлабу. Посмотрите, например, базовые пакеты numpy, scipy и matplotlib. Есть статистические пакеты, пакеты обработки текстов, пакеты работы с СУБД и т. д. Кроме того язык активно используется как скриптовый в ML и при обработке изображений (есть пакеты с интерфейсами).

-- 11.06.2018, 17:14 --

kotenok gav в сообщении #1319038 писал(а):
Обязан.

А в Питоне есть встроенный двумерный массив? Не список списков?

 
 
 
 Re: Курс по Python
Сообщение11.06.2018, 17:16 
realeugene в сообщении #1319039 писал(а):
А в Питоне есть встроенный двумерный массив? Не список списков?

А в чем разница?

 
 
 
 Re: Курс по Python
Сообщение11.06.2018, 17:21 
kotenok gav в сообщении #1319041 писал(а):
А в чем разница?

Список списков - это одномерный список, каждый элемент которого указывает на свой другой одномерный массив. Которые могут быть разной длины. А двумерный массив - это именно квадратная матрица. В numpy есть матрицы, но я не помню их среди базовых типов.

 
 
 
 Re: Курс по Python
Сообщение11.06.2018, 17:30 
Аватара пользователя
код: [ скачать ] [ спрятать ]
Используется синтаксис Python
def pascal(x):
    if x>1:
        ar=pascal(x-1)
        ar.append([1]*x)
        ar[x-1][0]=ar[x-2][0] # здесь не обязательно, для других треугольников потребуется
        ar[x-1][x-1]=ar[x-2][x-2] # здесь не обязательно, для других треугольников потребуется
        for i in range(1, x-1): # range не захватывает последнего значения
            ar[x-1][i]=ar[x-2][i-1]+ar[x-2][i]
        return ar
    else:
        ar=[[1]]
        return ar

ar=pascal(10)
for i in range(0, len(ar)): # range не захватывает последнего значения
    print(ar[i]) # отдельного переноса строки не требуется

Вывод:
    Код:
    [1]
    [1, 1]
    [1, 2, 1]
    [1, 3, 3, 1]
    [1, 4, 6, 4, 1]
    [1, 5, 10, 10, 5, 1]
    [1, 6, 15, 20, 15, 6, 1]
    [1, 7, 21, 35, 35, 21, 7, 1]
    [1, 8, 28, 56, 70, 56, 28, 8, 1]
    [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
(как и задумано).

Претензии принимаются.

Пока приторможу.

 
 
 
 Re: Курс по Python
Сообщение11.06.2018, 17:31 
Короче я сначала написал код

код: [ скачать ] [ спрятать ]
Используется синтаксис Python
def makeFibo():
    known = [1, 1]
    def fibo(index):
        if index < 0:
            raise ValueError("index should be nonnegative")
        old_len = len(known)
        if index >= old_len:
            known += [None] * (old_len - index + 1)
            for i in range(old_len, index + 1):
                # suboptimal but illustrative
                known[i] = known[i - 1] + known[i - 2]
        return known[index]
    return fibo
fibo = makeFibo()
fibo(11)

и только по последовавшей ошибке
Цитата:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in fibo
UnboundLocalError: local variable 'known' referenced before assignment
вспомнил, что у питона плохо с замыканиями. :facepalm: Тут надо переделать makeFibo в класс (known будет его полем и заполняться в конструкторе; плюс стоит переименовать её в _known, чтобы показать приватность). В общем мне лень дальше вспоминать, кто-нибудь другой, может быть, продолжит это.

UPD: I stand corrected, смотрите про замыкания ссылочку ниже.

 
 
 
 Re: Курс по Python
Сообщение11.06.2018, 17:32 
Аватара пользователя
kotenok gav в сообщении #1319038 писал(а):
Обязан.

Как видите, у меня получилось с непрямоугольным :-)

 
 
 
 Re: Курс по Python
Сообщение11.06.2018, 17:34 
Просто когда знаешь только один язык, не с чем сравнивать. :roll: (Не в обиду ТС, это чистая человеконезависимая правда.)

 
 
 
 Re: Курс по Python
Сообщение11.06.2018, 17:37 
Аватара пользователя
arseniiv
Спасибо, начинаю смутно понимать. Если в Python это нереально / очсложно, то давайте оставим тему.

 
 
 
 Re: Курс по Python
Сообщение11.06.2018, 17:40 
Я выше был неправ. См. https://www.learnpython.org/en/Closures.

-- Пн июн 11, 2018 19:42:52 --

Munin в сообщении #1319052 писал(а):
Если в Python это нереально / очсложно, то давайте оставим тему.
1. Не, даже если бы я был прав, с определением класса вместо функции было бы почти так же просто, просто я не совсем помню как его определять правильно.
2. В любом случае я тут наоффтопил, заканчиваю.

 
 
 
 Re: Курс по Python
Сообщение11.06.2018, 17:45 
Аватара пользователя
arseniiv
Собственно, мне вначале показалось, что вы описываете что-то типа lazy evaluation, а то, что вы написали, не так интересно.

 
 
 
 Re: Курс по Python
Сообщение11.06.2018, 17:46 
Вот, например, один из больших репозиториев пакетов для Питона: https://pypi.org/search/
Анаконда в стандартной конфигурации предустанавливает большинство наиболее популярных пакетов. Но и через PIP можно легко качать и ставить то, что интересно, имея голый Python.

 
 
 [ Сообщений: 163 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 11  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group