LINUX.ORG.RU

История изменений

Исправление vvn_black, (текущая версия) :

Я так понимаю надо добавить циклы for в функцию обхода значений get_node?
Пока не очень понял куда их добавить

Ничего никуда не надо добавлять. Это пример, как проще становится работать с уже заполненным списком при использовании генераторов.

Для примера, напечатать все значения data из списка, можно так:

node = a_dllist.first
while node:
    print(node.data)
    node = node.next

а можно так:

for node in a_dllist.items():
    print(node.data)

второе немного лаконичнее и более python way, а в некоторых случаях ещё и сильно удобнее.

А теперь представь, что у тебя есть уже заполненный твой список и тебе надо что-то с данными делать, например отобрать только четные, или сумму посчитать, или ещё чего. Всё это приятнее делать «по-питоньи», посмотри для примера как метод display до одной строки сократился.

Попробуй без методов items и values написать код отбора в список, например, только чётных значений, что у тебя получится? А с генераторами это всего одна строка:

e = [x for x in a_dllist.values() if x % 2 == 0]

Кстати, возвращаясь к твоей реализации, разве не интересно знать размер списка, т.е. напрашивается метод size(). )

Исправление vvn_black, :

Я так понимаю надо добавить циклы for в функцию обхода значений get_node?
Пока не очень понял куда их добавить

Ничего никуда не надо добавлять. Это пример, как проще становится работать с уже заполненным списком при использовании генераторов.

Для примера, напечатать все значения data из списка, можно так:

current = a_dllist.first
while node:
    print(node.data)
    node = node.next

а можно так:

for node in a_dllist.items():
    print(node.data)

второе немного лаконичнее и более python way, а в некоторых случаях ещё и сильно удобнее.

А теперь представь, что у тебя есть уже заполненный твой список и тебе надо что-то с данными делать, например отобрать только четные, или сумму посчитать, или ещё чего. Всё это приятнее делать «по-питоньи», посмотри для примера как метод display до одной строки сократился.

Попробуй без методов items и values написать код отбора в список, например, только чётных значений, что у тебя получится? А с генераторами это всего одна строка:

e = [x for x in a_dllist.values() if x % 2 == 0]

Кстати, возвращаясь к твоей реализации, разве не интересно знать размер списка, т.е. напрашивается метод size(). )

Исходная версия vvn_black, :

Я так понимаю надо добавить циклы for в функцию обхода значений get_node?
Пока не очень понял куда их добавить

Ничего никуда не надо добавлять. Это пример, как проще становится работать с уже заполненным списком при использовании генераторов.

Для примера, напечатать все значения data из списка, можно так:

current = a_dllist.first
while node:
    print(node.data)
    node = node.next

а можно так:

for node in a_dllist.items():
    print(node.data)

второе немного лаконичнее и более python way, а в некоторых случаях ещё и сильно удобнее.

А теперь представь, что у тебя есть уже заполненный твой список и тебе надо что-то с данными делать, например отобрать только четные, или сумму посчитать, или ещё чего. Всё это приятнее делать «по-питоньи», посмотри для примера как метод display до одной строки сократился.

Попробуй без методов items и values написать код отбора в список, например, только чётных значений, что у тебя получится? А с генераторами это всего одна строка:

e = [x.data for x in a_dllist.values() if x.data % 2 == 0]

Кстати, возвращаясь к твоей реализации, разве не интересно знать размер списка, т.е. напрашивается метод size(). )