Size: a a a

2020 January 24

.

. in Python KZ
Sultan Abilda
To offer you the better approach. Can you explain me the logic of your code? Because right now it's just changing the loop variable which leads the exit from loop.
ok 1min
источник

.

. in Python KZ
Sultan Abilda
To offer you the better approach. Can you explain me the logic of your code? Because right now it's just changing the loop variable which leads the exit from loop.
def calc(a):
   n = len(a)
   p2 = su = 0
   for i in range(n):
       if a[i] != 0:
           b, m2 = False, 0
           for j in range(i+1, n):
               if a[i] < a[j]:
                   for k in range(i+1, j):
                       su += a[i] - a[k]
                   i = j-1
                   b = False
                   break    
               if m2 < a[j]:
                   m2 = a[j]
                   b = True
           print(i, j, su)
           if b:
               p1 = i
               for k in range(i+1, p1):
                   su += a[p1] - a[k]    
   print(su)
источник

.

. in Python KZ
.
def calc(a):
   n = len(a)
   p2 = su = 0
   for i in range(n):
       if a[i] != 0:
           b, m2 = False, 0
           for j in range(i+1, n):
               if a[i] < a[j]:
                   for k in range(i+1, j):
                       su += a[i] - a[k]
                   i = j-1
                   b = False
                   break    
               if m2 < a[j]:
                   m2 = a[j]
                   b = True
           print(i, j, su)
           if b:
               p1 = i
               for k in range(i+1, p1):
                   su += a[p1] - a[k]    
   print(su)
my code doesn't work, so I need help to figure it out
источник

SA

Sultan Abilda in Python KZ
Ok i understood you problem. Currently you're using i and j as pointers to array element. But your pointers are not moving when you are doing i = j - 1
источник

SA

Sultan Abilda in Python KZ
The problem is that you don't understand how range function works.
источник

SA

Sultan Abilda in Python KZ
Simple solution for you just use while loop instead of for loop
источник

SA

Sultan Abilda in Python KZ
So you will be able to change your variables as you want
источник

SA

Sultan Abilda in Python KZ
But in general, advice for you. You need to understand the difference between "for" loop in c++, and in python.
источник

SA

Sultan Abilda in Python KZ
They have little bit different mechanic as I already said.
источник

АT

Аlisher Temirov in Python KZ
В Лутце пятом издании написано: However, this may run slower than the iterator-based for loop version, because iterators
run at C language speed inside Python, whereas the while loop version runs Python byte code through the Python virtual machine.
источник

АT

Аlisher Temirov in Python KZ
Никто не знает почему именно итераторы ывполняются за С
источник

АT

Аlisher Temirov in Python KZ
У Лутца не мог найти иль нет понял нормально
источник

A

Azamat in Python KZ
Аlisher Temirov
В Лутце пятом издании написано: However, this may run slower than the iterator-based for loop version, because iterators
run at C language speed inside Python, whereas the while loop version runs Python byte code through the Python virtual machine.
если это про то что условно while i < 5 медленне чем  for i in range(5), то

имлементация range() написана на С

а то что ты делаешь с переменными  внутре while приходится интерпретировать и это медленно.

даже i = i + 1 это довольно дорогая операция
источник

АT

Аlisher Temirov in Python KZ
Azamat
если это про то что условно while i < 5 медленне чем  for i in range(5), то

имлементация range() написана на С

а то что ты делаешь с переменными  внутре while приходится интерпретировать и это медленно.

даже i = i + 1 это довольно дорогая операция
ну эт частный случай, он говорит в общем об итераторах. Но энивей спасибо, стало вроде понятней.
источник

A

Azamat in Python KZ
таким же образом comprehensions быстрее чем циклы
источник

АT

Аlisher Temirov in Python KZ
А каким образом С код выполняется внутри интерпретатора? Этот код уже получается скомпилированный лежит в интерпретаторе, и как только интерпретатор до него дойдет, то он сходу выполняется без анализа и обработки?
источник

A

Azamat in Python KZ
грубо говоря да
источник

A

Azamat in Python KZ
ты можешь вообще анализировать байткод питона с помощью модуля dis
источник

A

Azamat in Python KZ
источник

A

Azamat in Python KZ
если есть желание прям закапываться в это
источник