2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5, 6 ... 11  След.
 
 Re: Курс по Python
Сообщение11.06.2018, 16:51 


21/05/16
4292
Аделаида
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 


27/08/16
10246
Munin в сообщении #1319018 писал(а):
Я пока не знаю, для чего он хорош

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

Например:

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

 Профиль  
                  
 
 Re: Курс по Python
Сообщение11.06.2018, 16:54 
Заслуженный участник
Аватара пользователя


30/01/06
72407

(Оффтоп)

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 


21/05/16
4292
Аделаида
Munin в сообщении #1319034 писал(а):
То есть, двумерный массив не обязан быть прямоугольным?

Обязан.

 Профиль  
                  
 
 Re: Курс по Python
Сообщение11.06.2018, 17:14 


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

-- 11.06.2018, 17:14 --

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

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

 Профиль  
                  
 
 Re: Курс по Python
Сообщение11.06.2018, 17:16 


21/05/16
4292
Аделаида
realeugene в сообщении #1319039 писал(а):
А в Питоне есть встроенный двумерный массив? Не список списков?

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

 Профиль  
                  
 
 Re: Курс по Python
Сообщение11.06.2018, 17:21 


27/08/16
10246
kotenok gav в сообщении #1319041 писал(а):
А в чем разница?

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

 Профиль  
                  
 
 Re: Курс по Python
Сообщение11.06.2018, 17:30 
Заслуженный участник
Аватара пользователя


30/01/06
72407
код: [ скачать ] [ спрятать ]
Используется синтаксис 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 
Заслуженный участник


27/04/09
28128
Короче я сначала написал код

код: [ скачать ] [ спрятать ]
Используется синтаксис 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 
Заслуженный участник
Аватара пользователя


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

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

 Профиль  
                  
 
 Re: Курс по Python
Сообщение11.06.2018, 17:34 
Заслуженный участник


27/04/09
28128
Просто когда знаешь только один язык, не с чем сравнивать. :roll: (Не в обиду ТС, это чистая человеконезависимая правда.)

 Профиль  
                  
 
 Re: Курс по Python
Сообщение11.06.2018, 17:37 
Заслуженный участник
Аватара пользователя


30/01/06
72407
arseniiv
Спасибо, начинаю смутно понимать. Если в Python это нереально / очсложно, то давайте оставим тему.

 Профиль  
                  
 
 Re: Курс по Python
Сообщение11.06.2018, 17:40 
Заслуженный участник


27/04/09
28128
Я выше был неправ. См. https://www.learnpython.org/en/Closures.

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

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

 Профиль  
                  
 
 Re: Курс по Python
Сообщение11.06.2018, 17:45 
Заслуженный участник
Аватара пользователя


30/01/06
72407
arseniiv
Собственно, мне вначале показалось, что вы описываете что-то типа lazy evaluation, а то, что вы написали, не так интересно.

 Профиль  
                  
 
 Re: Курс по Python
Сообщение11.06.2018, 17:46 


27/08/16
10246
Вот, например, один из больших репозиториев пакетов для Питона: https://pypi.org/search/
Анаконда в стандартной конфигурации предустанавливает большинство наиболее популярных пакетов. Но и через PIP можно легко качать и ставить то, что интересно, имея голый Python.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 163 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 11  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group