🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #27122

Re: B-drzewo w Pythonie

#27122
From: Jan Kaliszewski
Date: Sun, 03 Jan 2010 16:28
56 lines
2700 bytes
<wodzik@noreply.com> napisał:

> On 2010-01-03 03:34, Łukasz Rekucki wrote:

>> PS. Ogólnie twój kod nie jest zbyt pythoniczny (sposób użycia for ..
>> in, nazwy metod), a miejscami dość nieoptymalny, np:
>>
>> self.tablica.append(liczba)
>> self.tablica.sort()

> Pewnie dlatego, że dopiero zaczynam kodowanie w Pythonie, ale będę  
> wdzięczny za wszelkie sugestie.
> Rozumiem, że lepiej używać for coś in coś?

Tak, np.:

     def Print(self):
         if self.lisc:
             for wartosc in self.tablica:
                 print wartosc
         else:
             for i, wskaznik in enumerate(self.wskazniki):
                 wskaznik.Print()
                 if i < len(self.tablica):
                     print self.tablica[i]

Lub nawet:

     def Print(self):
         if self.lisc:
             print '\n'.join(map(str, self.tablica))
         else:
             for wskaznik, wartosc in itertools.iziplongest(
                                      self.wskazniki, self.tablica):
                 wskaznik.Print()
                 if wartosc is not None:
                     print wartosc


> I jak zoptymalizować ten kawałek z append i sort? czy wyszukać miejsce  
> gdzie ma się znaleźć liczba i użyć insert?

Patrz np. : http://docs.python.org/library/bisect.html (być może

> W sumie to podczas pisania nawet specjalnie się nie zastanawiałem nad  
> wydajnością, tylko moją wygodą ;]

I słusznie (przedwczesna optymalizacja to źródło [prawie] wszelkiego zła,
jak uważa np. GvR), ale bez przesady -- nie należy używac antyoptymalnych
konstrukcji, które mogą spowolnić program o rząd wielkości...

pozdr.
*j

-- 
Jan Kaliszewski (zuo)
Technical Details
Message-ID: <op.u5ytdlmqfvx12t@jerzozwiesz.home.aster.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.nask.pl!news.nask.org.pl!plix.pl!newsfeed1.plix.pl!nntp.aster.pl!newsread.aster.pl!newsread1.aster.pl!not-for-mail
References: <hhorn8$7ta$1@atlantis.news.neostrada.pl> <a99ed17d-e589-4ea7-87bd-7f551f284852@u41g2000yqe.googlegroups.com> <hhp2v8$kps$1@atlantis.news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.nask.pl!news.nask.org.pl!plix.pl!newsfeed1.plix.pl!nntp.aster.pl!newsread.aster.pl!newsread1.aster.pl!not-for-mail
From: "Jan Kaliszewski" <zuo@chopin.edu.pl>
Newsgroups: pl.comp.lang.python
Subject: Re: B-drzewo w Pythonie
Date: Sun, 03 Jan 2010 17:28:23 +0100
Organization: Aster Sp. z o.o.
Lines: 56
Message-ID: <op.u5ytdlmqfvx12t@jerzozwiesz.home.aster.pl>
References: <hhorn8$7ta$1@atlantis.news.neostrada.pl> <a99ed17d-e589-4ea7-87bd-7f551f284852@u41g2000yqe.googlegroups.com> <hhp2v8$kps$1@atlantis.news.neostrada.pl>
NNTP-Posting-Host: 62.121.72.3
Mime-Version: 1.0
X-Trace: newsread.aster.pl 1262536264 5021 212.76.33.132 (3 Jan 2010 16:31:04 GMT)
X-Complaints-To: abuse@aster.pl
NNTP-Posting-Date: Sun, 3 Jan 2010 18:22:15 +0000 (UTC)
User-Agent: Opera Mail/9.64 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit