Найти - Пользователи
Полная версия: Двумерные массивы
Начало » Python для новичков » Двумерные массивы
1 2
Rodegast
> То же самое получается.

Большое количество, это хотя бы несколько тысяч + неплохо бы посмотреть на потребление памяти.
py.user.next
Rodegast
Большое количество, это хотя бы несколько тысяч
А я думаю, что и на несколько тысяч оно то же самое покажет.

Rodegast
неплохо бы посмотреть на потребление памяти
Я не думаю, что оно переполнит память. На каких-нибудь прошлых компьютерах если только.
[guest@localhost ~]$ python3 -mtimeit '[1] * 10000'
10000 loops, best of 3: 25.6 usec per loop
[guest@localhost ~]$ python3 -mtimeit '[1] * 10000 + [1] * 10000'
10000 loops, best of 3: 184 usec per loop
[guest@localhost ~]$
Работает быстро, хотя памяти у меня не много.

Ну, ты уже достаточно взрослый, чтобы самому это всё проверить и показать мне. Если это так, я с удовольствием поковыряюсь в этом. А пока что всё выглядит так, что вы думали одно, а оказалось, что там всё совсем по-другому.
Rodegast
> А я думаю, что и на несколько тысяч оно то же самое покажет.

Ну как бы твой вариант на порядок медленнее..
 >>> import time
>>> def tst(foo):
    ...     ti = time.time()
    ...     foo()
    ...     print(time.time() - ti)
 
>>> test_set = [ list(range(x, x+1000)) for x in range(0, 100000, 1000) ]
>>> tst(lambda: max(map(max, test_set)))
0.00341081619263
 
>>> tst(lambda: max(max(i) for i in test_set))
0.00281500816345
 
>>> tst(lambda: max(sum(test_set, [])))
0.043771982193
py.user.next
Rodegast
Ну как бы твой вариант на порядок медленнее
Я посмотрел, при росте массивов строк за сотню элементов, начинает значительно падать скорость у моего варианта. Но до сотни элементов в строке разницы между вариантами нет никакой практически.

  
>>> import time
>>> 
>>> def tst(foo):
...     ti = time.time()
...     foo()
...     print(time.time() - ti)
... 
>>> def make_set(r, c):
...     return [list(range(x, x + 100)) for x in range(0, 100)]
... 
>>> test_set = make_set(100, 100)
>>> tst(lambda: max(map(max, test_set)))
0.000705718994140625
>>> tst(lambda: max(max(i) for i in test_set))
0.0007081031799316406
>>> tst(lambda: max(sum(test_set, [])))
0.0040013790130615234
>>> 
>>> 
>>> test_set = make_set(10, 10)
>>> tst(lambda: max(map(max, test_set)))
0.0002560615539550781
>>> tst(lambda: max(max(i) for i in test_set))
0.00026726722717285156
>>> tst(lambda: max(sum(test_set, [])))
0.0015683174133300781
>>> 
>>> 
>>> test_set = make_set(100, 10)
>>> tst(lambda: max(map(max, test_set)))
0.0002536773681640625
>>> tst(lambda: max(max(i) for i in test_set))
0.0002665519714355469
>>> tst(lambda: max(sum(test_set, [])))
0.0015172958374023438
>>> 
>>> 
>>> test_set = make_set(10, 100)
>>> tst(lambda: max(map(max, test_set)))
0.00025463104248046875
>>> tst(lambda: max(max(i) for i in test_set))
0.0002663135528564453
>>> tst(lambda: max(sum(test_set, [])))
0.0015218257904052734
>>>

Так-то можно дойти и до того, что Quicksort на самом деле квадратная сортировка, а не логарифмическая, и говорить “да это тот же пузырёк, только более забубённый, сложность-то n^2”.
Rodegast
> Я посмотрел, при росте массивов строк за сотню элементов, начинает значительно падать скорость у моего варианта. Но до сотни элементов в строке разницы между вариантами нет никакой практически.

Так и должно быть.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB