1

Тема: Python 2 і Python 3

Вітаю!

В python є така чудова функція zip() - http://ninjaside.info/blog/ru/funkcii-m … da-python/
Такий код:

>>> a = [1,2]
>>> b = [3,4]

В Python 2 виведе

[(1, 3), (2, 4)]

А в python 3:

<zip object at 0x03599F30>

От як мені в Python 3 вивести в такому вигляді як і в python 2?

2

Re: Python 2 і Python 3

Ой, вибачте, вже знайшов відповідь:

for i, j in c:
    print (i,j)

3

Re: Python 2 і Python 3

В python 3 намагаються зайвий раз списки не створювати (наприклад range() поверне range-об’єкт, а не список), тому якщо треба список - перетворюйте на список за допомогою функції list(). Вона приймає багато всіляких послідовностей.

Подякували: Q-bart1

4

Re: Python 2 і Python 3

bunyk написав:

В python 3 намагаються зайвий раз списки не створювати (наприклад range() поверне range-об’єкт, а не список), тому якщо треба список - перетворюйте на список за допомогою функції list(). Вона приймає багато всіляких послідовностей.

Це напевно роблять для зменшення навантаження на пам'ять, так?

5

Re: Python 2 і Python 3

Ні, скоріше для того щоб не навантажувати процесор створенням зайвих об’єктів, бо це займає час. Такий підхід називається "Ліниві обчислення".

Подякували: Q-bart1

6

Re: Python 2 і Python 3

bunyk написав:

Ні, скоріше для того щоб не навантажувати процесор створенням зайвих об’єктів, бо це займає час. Такий підхід називається "Ліниві обчислення".

Правильно лише частково - тоді, коли для обчислення кінцевого результату потрібні не всі значення списку/ітератора. Тоді непотрібні елементи можна й не обчислювати.

Якщо ж потрібно пройти по всьому списку, то вже немає різниці, обчислювати всі елементи зразу, чи тоді, коли вони реально використовуються. А от по пам'яті є різниця: список мусить висіти в пам'яті, поки обчислення не закінчаться, а при використанні ітератора можна видаляти попередній елемент перед створенням нового. Тобто при використанні списку ми матимемо O(n) і по часу, і по пам'яті, а при використанні ітератора - O(1) по пам'яті і в загальному випадку O(n) по часу.

Подякували: Q-bart1