Комментарии 30
Попробовал
Получил
Это даже не смешно. Могли бы оставить.
import math
Получил
ImportError: __import__ not found
Это даже не смешно. Могли бы оставить.
+3
help() вводит в ступор: Unknown error: Please email a bug report to philip@pgbovine.net
dir() не определен.
Ну это совсем не интересно…
dir() не определен.
Ну это совсем не интересно…
0
Кароче юзать как онлайн дебагер не получится. Я думал гораздо лучше будет это все.
+3
как раз хотел начать изучать, но платформа их довольно скудна на данный момент, придется самому все изучать досконально
0
Там на гитхабе написано что оттуда выкинули всё что можно и поставили ограничение в 200 шагов, что бы не использовали как дебаггер. Ну и сам питон там не на js написан, а кидает аяксом код на сервер, тот исполняет и возвращает все состояния памяти на всех шагах. Для обучения посмотреть что происходит в памяти — это же прекрасно.
+1
Уверен это интересно тем, кто пайтон видел только на картинках (типа меня).
0
На сайте сайте лежит задачка:
Не пойму, зачем нужно проходить лист два раза? Сортировать тоже, насколько понимаю, не обязательно.
Разве такой код (ниже) не решает задачу?
Two-sum
Write a function to return the sum of the two largest elements in the given list (assuming you're given a list with at least two elements).
Hint: Can you find the largest element? How about the second largest? Or think about sorting.
Solution: Scan through the list twice to find the two largest elements, then sum them (or sort and sum the two largest elements).
Не пойму, зачем нужно проходить лист два раза? Сортировать тоже, насколько понимаю, не обязательно.
Разве такой код (ниже) не решает задачу?
def sumTwoLargest(lst):
max = -9223372036854775807
prevMax = max
for el in lst:
if max < el:
prevMax = max
max = el
else:
if prevMax < el:
prevMax = el
return max+prevMax
+1
может они хотели что нибудь вроде:
def sumTwoLargest(lst):
return sorted( lst )[::-1][0]
0
извиняюсь, невнимательно прочитал условие, но решение не сильно отличается (без проверок)
def sumTwoLargest(lst):
return sum( sorted( input )[-2:] )
0
Вас не смущает, что сортировка «слегка медленнее», чем поиск 2-х максимальных чисел в списке? Как бы O(N*logN) и О(N) соответственно.
+3
А есть какие то требования? пока я увидел массив и пяти элементов. Я согласен что пробежаться по массиву это быстрее, но в данном случае, очевидно, что незачем городить огород для академических задачек в две строки.
+1
К стати а вы пробовали проверять решения на время работы?, т.е. прежде чем возражать я думаю должны были попробовать не так ли? Как это ни странно, но короткое решение оказалось в два раза быстрее по скорости работы.
в общем ни к чему споры, python это не си и даже не с++, и скорость работы встроенных функций может подкидывать классные загадки.
Python 2.6.5
для первого решения время :
real 0m1.905s
user 0m1.840s
sys 0m0.068s
для второго решения время :
real 0m0.881s
user 0m0.748s
sys 0m0.092s
строка запуска print sumTwoLargest( range( 1, 10000444 ))
в общем ни к чему споры, python это не си и даже не с++, и скорость работы встроенных функций может подкидывать классные загадки.
0
По-честному надо перемешивать (shuffle) массив, подаваемый на сортировку. Однако, это не даёт существенных отличий.
0
Не программирую на питоне.
Если я правильно понимаю, range(a,b) возвращает отсортированный по возрастанию лист. Маны говорят, что
На той же странице мана можно увидеть время работы сортировки на отсортированном наборе. Насколько понимаю, сложность в таком случае — O(n), т.е. подобная сложности варианта с одним проходом по массиву. Т.е. мы видим отношение констант.
Если набор будет случайным, какие будут результаты? :)
Если я правильно понимаю, range(a,b) возвращает отсортированный по возрастанию лист. Маны говорят, что
First the trivial cases, trivial for samplesort because it special-cased
them, and trivial for timsort because it naturally works on runs. Within
an «n» block, the first line gives the # of compares done by samplesort,
the second line by timsort, and the third line is the percentage by
which the samplesort count exceeds the timsort count:
На той же странице мана можно увидеть время работы сортировки на отсортированном наборе. Насколько понимаю, сложность в таком случае — O(n), т.е. подобная сложности варианта с одним проходом по массиву. Т.е. мы видим отношение констант.
Если набор будет случайным, какие будут результаты? :)
0
Да, скорее всего. Курс, ведь, про Python, а не алгоритмы.
+3
Берите max = lst[0], так надежнее.
0
На наборе, упорядоченном по убыванию, ломается.
Вообще, вместо этого магического числа я хотел написать -sysmaxint, но импорт sys на том сайте не работает.
Вообще, вместо этого магического числа я хотел написать -sysmaxint, но импорт sys на том сайте не работает.
0
max = lst[1]
prevMax = lst[0]
так работает
prevMax = lst[0]
так работает
0
def sumTwoLargest(lst):
prevMax = max = None
for el in lst:
if max < el:
prevMax = max
max = el
else:
if prevMax < el:
prevMax = el
print max, prevMax,
return max, prevMax
print sumTwoLargest([9,8,7,6,5,4,3]) == (9, 8)
print sumTwoLargest([3, 4, 5, 6, 7, 8, 9]) == (9, 8)
print sumTwoLargest([3, 5,7,8,3,2,4,7,9,5,6,7,4]) == (9, 8)
print sumTwoLargest([11, 12,7,8,3,2,4,7,9,5,6,7,4]) == (12, 11)
print sumTwoLargest([12, 5,7,8,3,2,4,7,9,5,6,7,4]) == (12, 9)
print sumTwoLargest([12, 11,7,8,3,2,4,7,9,5,6,7,4]) == (12, 11)
print sumTwoLargest([12, 11,7,8,3,2,12,7,9,5,6,7,4]) == (12, 12)
print sumTwoLargest([12, 7,8,3,2,4,7,9,5,6,7,11]) == (12, 11)
print sumTwoLargest([11, 7,8,3,2,4,7,9,5,6,7,4, 12]) == (12, 11)
prevMax = max = None
for el in lst:
if max < el:
prevMax = max
max = el
else:
if prevMax < el:
prevMax = el
print max, prevMax,
return max, prevMax
print sumTwoLargest([9,8,7,6,5,4,3]) == (9, 8)
print sumTwoLargest([3, 4, 5, 6, 7, 8, 9]) == (9, 8)
print sumTwoLargest([3, 5,7,8,3,2,4,7,9,5,6,7,4]) == (9, 8)
print sumTwoLargest([11, 12,7,8,3,2,4,7,9,5,6,7,4]) == (12, 11)
print sumTwoLargest([12, 5,7,8,3,2,4,7,9,5,6,7,4]) == (12, 9)
print sumTwoLargest([12, 11,7,8,3,2,4,7,9,5,6,7,4]) == (12, 11)
print sumTwoLargest([12, 11,7,8,3,2,12,7,9,5,6,7,4]) == (12, 12)
print sumTwoLargest([12, 7,8,3,2,4,7,9,5,6,7,11]) == (12, 11)
print sumTwoLargest([11, 7,8,3,2,4,7,9,5,6,7,4, 12]) == (12, 11)
0
НЛО прилетело и опубликовало эту надпись здесь
D1 = True == False
True = False
D2 = True == False
True = False
D2 = True == False
+1
его легко затроллить
x = 5 def foo(y): def bar(): for i in range(x,y): yield i return bar it = foo(7) for z in it(): print z
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Онлайн-репетитор по Python