Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Вопросы о Python-е

Автор Квас, декабря 23, 2011, 00:14

0 Пользователи и 1 гость просматривают эту тему.

RawonaM

Цитата: Квас от декабря 23, 2011, 19:21
Я читал Programming in Lua, и там был пример, когда последовательное добавление строк к строке-результату работает порядка 2 с, а объединение большого количества строк — элементов таблицы происходит мгновенно благодаря алгоритму ханойской башни или чего-то навроде. Это потому, что строки в Lua — неизменяемые объекты. В Pythone — тоже (согласно туториалу), поэтому я и соображаю, что идеологически верно за раз объединять кучу строк.
Вот совсем недавно я с таким же делом столкнулся за жабаскрипте.
В мозилле все отлично работало, а вдруг я решил на ИЕ запустить, жутко тормозило. У меня был цикл, который прибавлял к строке по чуть-чуть, пока она не достигала многих мегабайтов. ФФ вероятно умеет это оптимизировать сам, а ИЕ не умеет. Сделал массив в который добавлял по элементу, потом все это одним джоином, стало работать в ИЕ приемлемо.
Так что это зависит конкретно от имплементации.

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

RawonaM

Цитата: Demetrius от декабря 23, 2011, 20:11
Неправда, у Deme. получается список списков. Если честно, я вообще не знаю, как в Пюфоне сделать массив.
Список это и есть массив.

Demetrius

Вас?! Список—это когда элементы связаны через указатели, массив—это когда он расположены подряд. :what:

RawonaM

Цитата: Demetrius от декабря 23, 2011, 20:31
Вас?! Список—это когда элементы связаны через указатели, массив—это когда он расположены подряд. :what:
То что вы написали это связанный список.
Списком может быть что угодно.
В питоне нет прямого доступа к памяти, так что что там как расположено вы не знаете и вам не нужно этого знать.
Для программиста разница между связанным списком и массивом состоит в том, что к элементам массива есть прямой доступ, а по связанному списку нужно гулять как по ленте.
Списки в питоне это самые настоящие массивы с точки зрения пользования.



Квас

Да, список списков, два раза сплит и два раза джойн — это, видимо, то, чего моя душенька желала. :yes: Насчёт словаря тоже понравилось.
Пишите письма! :)

Kern_Nata

походу у меня те же проблемы в sql
:fp:
оптимизация и фсётакое
до чего ж люди-то умные есть!
VOLĀNTĀ ALTE

Kern_Nata

Цитата: Demetrius от декабря 23, 2011, 20:31
Вас?!
а правду мне немцы говорили, шо нуна говорить (вопрошать) не "вас", а "битте"?
VOLĀNTĀ ALTE

RawonaM

Квас, давайте еще вопросы :)

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

А на других языках нужно лишнего напихивать, так что суть уже теряется :(

У нас правда курсы сугубо теоретические, но вот два практических задания есть, смысл в коих мне не особо понятен.

Квас

По мере поступления — обязательно. :)

Пока такой общий вопрос: как у питона обстоит дело с общением с внешним миром? Скажем, взаимодействие с другими программами или возможность использования его функций другими скриптовыми языками. Последнее, насколько понимаю — штучный товар.

Такая, например, ситуация: питон должен обработать некоторый файл и создать ТеХовский файл, который нужно обработать latex-ом. Я пока вижу единственный выход: взаимодействие организуется с помощью AutoHotkey, который запускает питоновский скрипт, ждёт его окончания и пару раз запускает латех.
Пишите письма! :)

RawonaM

Цитата: Квас от декабря 23, 2011, 22:08
Такая, например, ситуация: питон должен обработать некоторый файл и создать ТеХовский файл, который нужно обработать latex-ом. Я пока вижу единственный выход: взаимодействие организуется с помощью AutoHotkey, который запускает питоновский скрипт, ждёт его окончания и пару раз запускает латех.
Не очень понял зачем тут АНК нужен.
Питон умеет читать файлы, он прочтет ТеХ файл, обработает, вызовет ЛаТеХ.

Квас

Умеет вызывать? Это замечательно.

Насчёт AHK я — потому что quam cuisque nôrit artem, in hâc se exerceat.
Пишите письма! :)

Demetrius

Offtop
Цитата: Kern_Nata от декабря 23, 2011, 21:14
Цитата: Demetrius от декабря 23, 2011, 20:31
Вас?!
а правду мне немцы говорили, шо нуна говорить (вопрошать) не "вас", а "битте"?
А я откуда знаю? Кто здесь видел немцев: я или Вы?  ;D

РавонаМ, спасибо, буду знать.

Квас

Алгоритмически вопрос тупейший, но я запутался с кодировками.

Предположим, я хочу сделать элементарную русскую склонялку. Даётся слово «трава», от него надо оторвать -а и к основе добавлять окончания -а, -ы и по списку; результаты можно в список.

Я написал функцию и пытался тестировать её из интерактивного режима — не вышло. Я хочу, чтобы функция работала с utf-8 и не соображу, где надо ставить u, где какие unicode и пр. Может быть, глючит у меня от того, что в консоли не utf-8? Пока есть следующее:

# -*- coding: utf-8 -*-

def decline(word, type):
    if type == 11: # трава
        stem = word[0:len(word)-2]
        return [stem + u'а',
                      stem + u'ы',
                      stem + u'е',
                      stem + u'у',
                      stem + u'ой']
Пишите письма! :)

D3

Я вряд ли чем помогу, я плохо знаю Python 2, как-то мне третий больше нравится.

Цитировать
Может быть, глючит у меня от того, что в консоли не utf-8?
Всё возможно. word Вы передаёте как уникодовую строку? Если вы её прочитали откуда-то и она не в уникоде, делайте word.decode('cp1251') перед тем, как передавать её в функцию.

По идее, при выводе в консоль уникодные строки должны перекодироваться правильно. Можете на всякий вывод при выводе в консоль попробовать сделать text.encode('cp866')... Но, по идее, если строка уникодная, то Python сам должен разобраться.

Квас

Спасибо, завтра попробую.

Я себе поставил 2.7, потому что на сайте было написано: «Не знаете что ставить — ставьте 2.7.» :) Неужели по такому маленькому кусочку уже понятна версия? ;) В принципе, можно и третий попробовать.
Пишите письма! :)

E4

Цитата: Квас от января 20, 2012, 00:09
Я себе поставил 2.7, потому что на сайте было написано: «Не знаете что ставить — ставьте 2.7.» :) Неужели по такому маленькому кусочку уже понятна версия? ;) В принципе, можно и третий попробовать.
С вторым питоном работают большинство сторонних библиотек (например, лингвистическая NLTK); их потихоньку портируют на 3, но очень медленно. Именно поэтому всем рекомендуют (пока что) второй питон.


3.x обратно не совместим с 2.x (ну, если не считать программы-автопреобразователя), зато там переделали некоторые вещи. Например, теперь все строки уникодовые, поэтому префикса u нет (зато есть префикс b, чтобы указать, что это не строка, а массив байт, замаскированный под строку). Вот по этому и узнал :)

Или вот, например, убрали варианты для увеличения скорости: нет xrange, зато теперь range сам разбирается, какое представление будет удобнее; нет cpickle, зато pickle сам вызывает ускоренную версию, если она доступа.

Квас

IPython кто-нибудь пробовал на Windows установить? QT console работает?
Пишите письма! :)

RawonaM


Квас

I don't know yet. I'd say IDLE is a very rudimentary interactive tool. Google says IPython has certain advantages over the ordinary python console, whereas qt console has no rival whatever. :) I'd love to try NumPy  and SciPy. QT console must be useful for them (e. g. it can display graphics inline).
Пишите письма! :)

Demetrius

Цитата: Квас от апреля 22, 2012, 12:02
I'd say IDLE is a very rudimentary interactive tool.
O_o"
I've never had a task for which I'd need something besides IDLE.

RawonaM

Цитата: Квас от апреля 22, 2012, 12:02
I don't know yet.
Pourquoi cette langue hérétique?!! >(

Цитата: Квас от апреля 22, 2012, 12:02
I'd love to try NumPy  and SciPy. QT console must be useful for them (e. g. it can display graphics inline).
Alors utilise PyScriptor, IDE complet :)

Квас

Цитата: Demetrius от апреля 22, 2012, 12:20
Цитата: Квас от апреля 22, 2012, 12:02I'd say IDLE is a very rudimentary interactive tool.
O_o"
I've never had a task for which I'd need something besides IDLE.

I'm afraid IDLE won't do tricks like this:
http://www.scipy.org/Cookbook/OptimizationDemo1
Generally, I don't see any essential advantages of IDLE over the console, except, perhaps, the copypaste. On the other hand, the console has the command history.
Пишите письма! :)


Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр