Составление списка: лучшие практики Python - PullRequest
0 голосов
/ 16 февраля 2019

Я часто собираю списки по одному элементу за раз в Python 3;скажем, например, я делаю список, просматривая связанный список с первым элементом head :

l = []
while head:
    l.append(head.val)
    head = head.next

Мне было интересно, каковы лучшие практики.Есть ли другой способ написать это?Можно ли описать список одной строкой, используя что-то вроде этого:

while head:
    l = # something creating the list AND appending elements
    head = head.next

Еще лучше: всегда ли мне нужно использовать цикл для создания списков в похожих случаях, или часто есть способысделать нужный список в одну строку?

Спасибо!

РЕДАКТИРОВАТЬ: опечатка в коде!

1 Ответ

0 голосов
/ 16 февраля 2019

С точки зрения ООП, наилучшей практикой является использование метода Python __iter__ для приведения итерируемого к list.

Я предполагаю, что ваш связанный список class выглядит немного какthis.

class LinkedList:
    def __init__(self, value, nxt=None):
        self.value = value
        self.next = nxt

Чтобы разрешить итерацию в вашем связанном списке, вы можете определить __iter__

class LinkedList:
    def __init__(self, value, nxt=None):
        self.value = value
        self.next = nxt

    def __iter__(self):
        while self:
            yield self.value
            self = self.next

Затем вы можете позволить list обрабатывать приведение LinkedListповторяемый.

head = LinkedList(1, LinkedList(2, LinkedList(3)))
lst = list(head) # [1, 2, 3]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...