Что означает это +1 в списке перестановок с Python? - PullRequest
0 голосов
/ 21 апреля 2020

Эта перестановка происходит от Udacity и производится с Python. Но у меня есть проблемы, чтобы понять, что значит +1 в этой строке for j in range(0, len(p) + 1):. Кто-нибудь может помочь мне понять это? Я немного смущен.

Спасибо всем!

import copy
def permute(l):

    perm = []
    if len(l) == 0:
        perm.append([])
    else:
        first_element = l[0]
        after_first = slice(1, None)
        sub_permutes = permute(l[after_first])
        for p in sub_permutes:
            for j in range(0, len(p) + 1):
                r = copy.deepcopy(p)
                r.insert(j, first_element)
                perm.append(r)
    return perm

1 Ответ

2 голосов
/ 21 апреля 2020

Идея этого l oop заключается в создании списков, каждый из которых имеет first_element в разных местах.

Чтобы вставить элемент после последнего индекса (поведение mimi c append), вы должны написать l.insert(len(l), element)). Поэтому, когда они пытаются вставить первый элемент в каждое место списка, они хотят, чтобы значение range было от 0 до len(p) и было включено, поэтому они добавляют +1 в диапазон.

In [1]: l = [1,2,3]
In [2]: for i in range(0, len(l)+1):
   ...:     new_l = list(l)
   ...:     new_l.insert(i, 4)
   ...:     print(new_l)
   ...:
[4, 1, 2, 3]
[1, 4, 2, 3]
[1, 2, 4, 3]
[1, 2, 3, 4] # without the +1 this line would not be created
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...