Можно ли поместить список в тот же список? - PullRequest
0 голосов
/ 12 ноября 2019

Можно ли поместить список в том же списке в python? Какова цель этого?

>>> a = [2, 5, 2]
>>> a.extend([a])
>>> a
[2, 5, 2, [...]]
>>> print(a[3])
[2, 5, 2, [...]]
>>> print(a[1])
5
>>> print(a[2])
2
>>> print(a[3])
[2, 5, 2, [...]]
>>> print(a[4])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> print(a[3])
[2, 5, 2, [...]]

1 Ответ

4 голосов
/ 12 ноября 2019

Да, как показывает ваш собственный код, список может содержать себя в качестве члена. Строго говоря, список содержит ссылку на сам . Думайте об этом как о книге, у которой есть собственное название, написанное на одной из ее страниц;книга на самом деле не содержит самого , просто ссылку на себя, так что в этом нет никакого парадокса.

Что касается цели, редко есть причина для этого;но у языка нет веских причин, чтобы помешать вам сделать это. Однако более косвенные рекурсивные ссылки могут быть очень полезны. Рассмотрим структуру данных списка смежности для графа:

class Node:
    def __init__(self, name):
        self.name = name
        self.neighbours = []

# the graph has two nodes
node_a = Node('a')
node_b = Node('b')

# they are neighbours of each other
node_a.neighbours.append(node_b)
node_b.neighbours.append(node_a)

Теперь node_a.neighbours[0].neighbours - это список, который содержит node_a - рекурсивную ссылку на себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...