История изменений
Исправление soomrack, (текущая версия) :
И объясни мне, только согласно документации, пожалуйста, почему
my_list = [1] * (10**5)
print(f"len(my_list) = {len(my_list)}")
sum = 0
for item in my_list:
my_list.pop(0)
sum = sum + item
print(f"sum = {sum}")
выводит:
len(my_list) = 100000
sum = 50000
исполняется, секунды, а если степень поменять на **6, что будет выполняться оооочень долго.
Но при этом, если закомментить строчку my_list.pop(0)
ты вывод будет 10000 и 10000, а исполняться будет мгновенно, в т.ч. и для **6.
Что там по факту происходит «под капотом» этих выражений?
PS: в питоне в цикле for менять коллекцию не стоит, по-хорошему, ее бы стоило делать immutable на уровне языка.
Исправление soomrack, :
И объясни мне, только согласно документации, пожалуйста, почему
my_list = [1] * (10**5)
print(f"len(my_list) = {len(my_list)}")
sum = 0
for item in my_list:
my_list.pop(0)
sum = sum + item
print(f"sum = {sum}")
выводит:
len(my_list) = 100000
sum = 50000
исполняется, секунды, а если степень поменять на **6, что будет выполняться оооочень долго.
Но при этом, если закомментить строчку my_list.pop(0)
ты вывод будет 10000 и 10000, а исполняться будет мгновенно.
Что там по факту происходит «под капотом» этих выражений?
PS: в питоне в цикле for менять коллекцию не стоит, по-хорошему, ее бы стоило делать immutable на уровне языка.
Исходная версия soomrack, :
И объясни мне, только согласно документации, пожалуйста, почему
my_list = [1] * (10**5)
print(f"len(my_list) = {len(my_list)}")
sum = 0
for item in my_list:
my_list.pop(0)
sum = sum + item
print(f"sum = {sum}")
выводит:
len(my_list) = 100000
sum = 50000
исполняется, секунды, а если степень поменять на **6, что будет выполняться оооочень долго.
Но при этом, если закомментить строчку my_list.pop(0)
ты вывод будет 10000 и 10000, а исполняться будет мгновенно.
Что там по факту происходит «под капотом» этих выражений?
PS: в питоне в цилке for менять коллекцию не стоит, по-хорошему, ее бы стоило делать immutable на уровне языка.