Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Python
Перезагрузить страницу Фишки как реализовать программу
Ответ
 
Опции темы Опции просмотра
  (#16 (permalink)) Старый
Vladimir the Red Sunny Vladimir the Red Sunny вне форума
Member
 
Сообщений: 4,232
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.05.2003
По умолчанию 16.11.2007, 19:28

Вероятно, список реализован не в виде связного списка, а в виде массива: время доступа - константно, время вставки - зависит от близости к концу.

Код:
# -*- coding: windows-1251 -*-
from time import time

a = range(10000000)

print "Доступ:"
t = time()
print a[0]
print "В начало: %f"%(time()-t)

t = time()
print a[-1]
print "В конец: %f"%(time()-t)

t = time()
print a[5000000]
print "В середину: %f"%(time()-t)

print "Вставка:"
t = time()
a.insert(0, 3)
print "В начало: %f"%(time()-t)

t = time()
a.insert(10000000, 3)
print "В конец: %f"%(time()-t)

t = time()
a.insert(5000000, 3)
print "В середину: %f"%(time()-t)
Цитата:
Доступ:
0
В начало: 0.000000
9999999
В конец: 0.000000
5000000
В середину: 0.000000
Вставка:
В начало: 0.094000
В конец: 0.000000
В середину: 0.015000
Обрати внимание, что вставка в начало занимает в 9 раз больше времени, чем в середину.
Ответить с цитированием
  (#17 (permalink)) Старый
Кошмар Кошмар вне форума
Member
 
Сообщений: 2,694
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.04.2005
По умолчанию 16.11.2007, 23:13

На заметку:
Код:
def f():
    for z in xrange(4):
        c=time.clock()
        a=[0]*1000000
        for i in xrange(1000000):
            a[i]=i
        print time.clock()-c

def v():
    for z in xrange(4):
        c=time.clock()
        a=[]
        for i in xrange(1000000):
            a.append(i)
        print time.clock()-c

print "\tnow"
f()
print "\tappend"
v()
Результат:
Код:
    now
0.291507440191
0.326187825548
0.326408244623
0.33789378259
    append
0.576710168471
0.625181133356
0.619296027847
0.621875685318


импортирован с progz.ru
Ответить с цитированием
  (#18 (permalink)) Старый
Vladimir the Red Sunny Vladimir the Red Sunny вне форума
Member
 
Сообщений: 4,232
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.05.2003
По умолчанию 19.11.2007, 05:44

Цитата:
я думал что наоборот буде быстрей... Где у списка "хвост"?
Ты вот этим, что ли, вдохновился?
Ответить с цитированием
  (#19 (permalink)) Старый
Кошмар Кошмар вне форума
Member
 
Сообщений: 2,694
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.04.2005
По умолчанию 19.11.2007, 13:57

Да.
Я и раньше пытался это выяснить, но шёл неверным путём - искал разницу во временни доступа к элементу.
Я фраза Трурла подтолкнула на верную мысль.
Ответить с цитированием
  (#20 (permalink)) Старый
serenissimus
Guest
 
Сообщений: n/a
По умолчанию 13.12.2007, 20:46

А вот ещё один фишка.
У питона есть "нескромный" оператор (_*_)

Код:
>>> 4
4
>>> (_*_)
16

Как видно он возводим в степень предыдущее число.
Ответить с цитированием
Ads.
  (#21 (permalink)) Старый
Кошмар Кошмар вне форума
Member
 
Сообщений: 2,694
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.04.2005
По умолчанию 13.12.2007, 22:00

ну это не оператор. Это целое выражение. К тому же баян.


импортирован с progz.ru
Ответить с цитированием
  (#22 (permalink)) Старый
Vladimir the Red Sunny Vladimir the Red Sunny вне форума
Member
 
Сообщений: 4,232
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.05.2003
По умолчанию 17.12.2007, 08:57

Возможно, все уже знают, а я сегодня впервые увидел вот такой if:

Код:
lambda text: int(text) if text.isdigit() else text
Ответить с цитированием
  (#23 (permalink)) Старый
Кошмар Кошмар вне форума
Member
 
Сообщений: 2,694
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.04.2005
По умолчанию 18.12.2007, 14:25

я тоже.


импортирован с progz.ru
Ответить с цитированием
  (#24 (permalink)) Старый
Vladimir the Red Sunny Vladimir the Red Sunny вне форума
Member
 
Сообщений: 4,232
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.05.2003
По умолчанию 20.12.2007, 09:39

Бесконечность:
Цитата:
Negative infinity:

>>> None < -1e308
True

Positive infinity:

>>> () > 1e308
True
Нашёл тут: http://barnesc.blogspot.com/2005/10/...in-python.html
Ответить с цитированием
Ads
  (#25 (permalink)) Старый
Vladimir the Red Sunny Vladimir the Red Sunny вне форума
Member
 
Сообщений: 4,232
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.05.2003
По умолчанию 20.12.2007, 09:39

Бесконечность:
Цитата:
Negative infinity:

>>> None < -1e308
True

Positive infinity:

>>> () > 1e308
True
Нашёл тут: http://barnesc.blogspot.com/2005/10/...in-python.html
Ответить с цитированием
  (#26 (permalink)) Старый
Vladimir the Red Sunny Vladimir the Red Sunny вне форума
Member
 
Сообщений: 4,232
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.05.2003
По умолчанию 20.12.2007, 09:39

Бесконечность:
Цитата:
Negative infinity:

>>> None < -1e308
True

Positive infinity:

>>> () > 1e308
True
Нашёл тут: http://barnesc.blogspot.com/2005/10/...in-python.html
Ответить с цитированием
  (#27 (permalink)) Старый
Vladimir the Red Sunny Vladimir the Red Sunny вне форума
Member
 
Сообщений: 4,232
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.05.2003
По умолчанию 27.12.2007, 10:43

Всякие трюки с присваиванием:
http://nedbatchelder.com/blog/200701...0070110T070106
Ответить с цитированием
  (#28 (permalink)) Старый
Vladimir the Red Sunny Vladimir the Red Sunny вне форума
Member
 
Сообщений: 4,232
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.05.2003
По умолчанию 27.12.2007, 10:43

Всякие трюки с присваиванием:
http://nedbatchelder.com/blog/200701...0070110T070106
Ответить с цитированием
  (#29 (permalink)) Старый
Vladimir the Red Sunny Vladimir the Red Sunny вне форума
Member
 
Сообщений: 4,232
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.05.2003
По умолчанию 27.12.2007, 10:43

Всякие трюки с присваиванием:
http://nedbatchelder.com/blog/200701...0070110T070106
Ответить с цитированием
  (#30 (permalink)) Старый
Vladimir the Red Sunny Vladimir the Red Sunny вне форума
Member
 
Сообщений: 4,232
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.05.2003
По умолчанию 09.01.2008, 06:55

Превращение итератора в "ленивый список".
Код:
class Lazy_list: 
    def __init__(self, iterator): 
        self.data = [ ] 
        self.iterator = iterator 

    def __getitem__(self, index): 
        while len(self.data) <= index: 
            self.data.append( self.iterator.next() ) 
        return self.data[index]
Что-то не совсем понимаю область применения этого конструкта. Допустим, те же числа Фибоначчи им же не посчитаешь?..
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно реализовать программу в паскале абс Bart2000 Pascal 0 03.04.2012 01:01
реализовать программу leshan Вопросы начинающих программистов 0 16.01.2012 23:21
Как реализовать идею в программу? =) Ильяя С/С++ 1 30.11.2011 11:51
Фишки связанные с видео Мборзик Видеокарты 4 05.09.2011 22:42
Требуется реализовать программу elena.serebr Delphi 1 17.05.2011 02:35
Реализовать программу – сниффер на С++ Валькирия Вопросы начинающих программистов 9 09.10.2008 05:36
Сумма ряда как реализовать программу hitter Assembler 1 20.03.2008 15:13
Примочки и фишки при работе с ПК. Max Общетематический 0 26.02.2008 13:32
Как написать программу и реализовать ее EcZe C++ Builder 5 07.01.2007 14:41
фишки Sith Офтопик 11 27.12.2006 19:54
3d в Pascal как реализовать программу fazzz Pascal 2 11.06.2005 19:46
Как реализовать программу управления многопроцессоным комплексом gryzli Вопросы начинающих программистов 0 06.01.2005 02:59



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов