[Python] вопрос/ответ.

Discussion in 'Python' started by De-visible, 21 Jan 2009.

  1. five5feer

    five5feer Active Member

    Joined:
    8 Feb 2009
    Messages:
    164
    Likes Received:
    136
    Reputations:
    19
    тут я хочу изучить питон, искал в нете литературу, но так и не определился с чего бы начать;
    решил спросить у реальных людей... какие хорошие книги, какие вы читали?
     
  2. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Вообще то вполне достаточно стандартной документации и пара, тройка статей по синтаксису )
     
  3. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Викиучебник + курс от Сузи Р.А., и практика, этого хватит
     
  4. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Даже не интересовался подобным вопросом, потому что насколько я знаю, то при сборке в один екзе через py2exe будут проблемы с путями(насколько я понял то там будет тупо распаковка архива где-то в временную папку, а потом уже запуск оттуд, мне же такое не катит), а мне иногда нужна динамическая подгрузка моих модулей...
     
  5. Ergoproxy

    Ergoproxy Elder - Старейшина

    Joined:
    18 Jan 2008
    Messages:
    248
    Likes Received:
    155
    Reputations:
    45
    Во во создаётся тупо архив + в нём ехе, но мля вес его просто ппц :mad:
     
  6. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Ну вес такой и будет - пакуется то интерпритатор + все модули, с этим ничего не поделаешь
     
  7. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Пипец, как бы ни прискорбно, но для threads-safe счетчика пришлось таки юзать класс - взял готовый мини-счетчик с маиллиста питона и переделал его немного по своему :(
    Code:
    class Counter:
        def __init__(self, start=0, increment=1):
            self.counter = start
            self.increment = increment
            self.lock = threading.RLock()
        def __call__(self):
            self.lock.acquire()
            self.counter += self.increment
            i = self.counter
            self.lock.release()
            return i
        def Get(self):
            self.lock.acquire()
            i = self.counter
            self.lock.release()
            return i
        def Clear(self):
            self.lock.acquire()
            self.counter = 0
            i = self.counter
            self.lock.release()
            return i
    
     
  8. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Есть ли какой-то способ уменьшить потребление памяти питоновой программой. Даже простой бот на SleekXMPP отъедает 9 метров оперы. Для ВДС с малой памятью - немало
     
    _________________________
    1 person likes this.
  9. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Посмотри сюда , там есть ссылка еще куда-то где обсуждают этот вопрос. П.С. Не пробовал алгоритм просмотреть, возможно лучше было бы в бесконечных циклах поставить time.sleep() - не будет так бешено мотать
     
    2 people like this.
  10. [n]-c0der

    [n]-c0der Member

    Joined:
    3 Feb 2009
    Messages:
    83
    Likes Received:
    24
    Reputations:
    -1
    Значит твоя программка не мало чего подгружает, оптимизируй...
     
  11. Ergoproxy

    Ergoproxy Elder - Старейшина

    Joined:
    18 Jan 2008
    Messages:
    248
    Likes Received:
    155
    Reputations:
    45
    Написать программу поиска самого длинного слова в строке, разделенной пробелами.


    Кто знает как реализовать?
    Получилось вот так но теперь не знаю как выбрать самое большое :mad:


    Code:
     str = "Mary has a little lamb" 
     for w in str.split(" "):
          a = len(w)     
         print w, a
     
    1 person likes this.
  12. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    ну ежели по тупорылому то за два прохода можно сделать без проблем
    Code:
    stroka = "Mary has a little lamb"
    maxlength = 0
    splitted_str = stroka.split(" ")
    for w in splitted_str:
          if len(w)>maxlength:
              maxlength = len(w)
          else:
             pass
    
    for w in splitted_str:
        if len(w) == maxlength:
            print w
        else:
           pass
    
    проверил, поправил, 100% рабочий вариант
     
    #172 login999, 16 Jun 2009
    Last edited: 16 Jun 2009
    2 people like this.
  13. Ergoproxy

    Ergoproxy Elder - Старейшина

    Joined:
    18 Jan 2008
    Messages:
    248
    Likes Received:
    155
    Reputations:
    45

    Угу спасибо большое, ток вот maxlength для работы с буфером если я не ошибаюсь, а если ли нечто такое ток для строк? для цифр есть max() ПЫСЫ интерес)))
     
  14. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    maxlength - это имя переменной )
    обрисуй что ты именно хочешь увидеть, для цифр есть макс потому что там все однозначно, 1>0 и ппц, а как ті будешь вібирать саму большую букву ?
     
  15. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Вот так более компактно)
    Code:
    str = "Mary has a little lamb"
    words = {}
    for w in str.split(" "):
        words[len(w)] = w     
    
    print words.get(max(words))
     
    #175 razb, 16 Jun 2009
    Last edited: 16 Jun 2009
    3 people like this.
  16. Ergoproxy

    Ergoproxy Elder - Старейшина

    Joined:
    18 Jan 2008
    Messages:
    248
    Likes Received:
    155
    Reputations:
    45
    Мля и правда :D , ми вдуплил)
     
  17. Ergoproxy

    Ergoproxy Elder - Старейшина

    Joined:
    18 Jan 2008
    Messages:
    248
    Likes Received:
    155
    Reputations:
    45
    Как имея файл некий f.txt и содержимое вида:
    127.0.0.1 125
    10.0.0.1 126

    составить словарь вида значение:ключ т.е
    {'127.0.0.1 : '125', '10.0.0.1' : '126'}
    :confused:
     
  18. [n]-c0der

    [n]-c0der Member

    Joined:
    3 Feb 2009
    Messages:
    83
    Likes Received:
    24
    Reputations:
    -1
    парсить регуляркой, вообще очень просто.

    Code:
    import re
    cortej = {}
    with open('file1.txt','a+') as f1:
        for word in f1:
            txt1 = str(re.findall(r'(\d.*) ',word))[2:-2]
            txt2 = str(re.findall(r' (.*)',word))[2:-2]
            cortej[txt1]=txt2
    print cortej
    
    '''
    Example:
    
    file1:
    
        127.0.0.1 34
        128.0.0.2 43
        134.546.123.1 21
    
    result:
    
        {'134.546.123.1': '21', '128.0.0.2': '43', '127.0.0.1': '34'}
    '''
    
     
    #178 [n]-c0der, 23 Jun 2009
    Last edited: 23 Jun 2009
    1 person likes this.
  19. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Ну вот и нахера там регулярка ?
    Code:
    some_dictionary = {}
    with open("source.txt") as inpt:
        for line in inpt:
            line = line.translate(None, "\r\n").split(" ")
            some_dictionary[line[0]] = line[1]
    print some_dictionary 
    
     
    1 person likes this.
  20. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Code:
    cortej = {}
    2 [n]-coder, не хочу придераться к коду, но кортеж и словарь разные вещи )
     
    1 person likes this.