История изменений
Исправление 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(). )