Форум сайта python.su
Андрей Светловбыстро, но медленней чем лямбда и простое суммирование
operator - это хорошо и быстро. Используйте его везде, где можно.
from timeit import Timer
t = Timer("c = operator.iadd(321654,98654)", "import operator")
print t.timeit(number=10000000)
t = Timer("c = su(321654,98654)", "su = lambda a,b:a+b")
print t.timeit(number=10000000)
t = Timer("c = 321654+98654", "")
print t.timeit(number=10000000)
1.98863911629
1.78381896019
0.360954999924
Офлайн
o7412369815963Ну да, медленнее, если брать пример, не связанный с поставленной задачей.
быстро, но медленней чем лямбда и простое суммирование
from timeit import Timer
t = Timer("c = reduce(operator.add, [[1, 2, 3], [4, 5, 6], [7, 8, 9]], [])", "import operator")
print t.timeit(number=100000)
t = Timer("c = list(itertools.chain(*[[1, 2, 3], [4, 5, 6], [7, 8, 9]]))", "import itertools")
print t.timeit(number=100000)
t = Timer("c = reduce(lambda x, y: x + y, [[1, 2, 3], [4, 5, 6], [7, 8, 9]], [])", "")
print t.timeit(number=100000)
t = Timer("c = sum([[1, 2, 3], [4, 5, 6], [7, 8, 9]], [])", "")
print t.timeit(number=100000)
Отредактировано (Апрель 25, 2010 21:29:43)
Офлайн
Вот как меняется картинка для более новых питонов. Но лямбда все равно проигрывает operator.iadd.
python2.5:
0.270653009415
0.605501890182
0.348989009857
0.249788999557
python2.6:
0.256490945816
0.545876026154
0.3670399189
0.248121976852
python3.1:
0.259869098663
0.42289686203
0.35302400589
0.241573095322
Офлайн
А по самому первому вопросу я правильно написал(по простому)?
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
a=input('value=')
if 0<a<10:
for x in arr:
if a in x:
x.append(' a='+str(a))
print x;break
print x
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
a=input('value=')
if 0<a<10:
for x in arr:
for y in x:
print y,
if y%3==0:print
if a==y:break
if a==y:break
print 'a=',a
Отредактировано (Апрель 25, 2010 22:55:43)
Офлайн
Всем спасибо за ответы!
EdНа мой взгляд, самый интересный и компактный вариант)
А к чему все эти лишние сущности вообще?
Код:
sum(a, )
Офлайн