Вы знаете, что Python интерпретируется, верно?Вы можете просто напечатать строки, которые вы не понимаете, непосредственно в python и посмотреть, что произойдет ... сначала начните с небольших значений.
Я не понимаю алгоритм itertools.combination ()
Документация здесь и включает пример вывода.Обратите внимание, что значение, возвращаемое из combinations
, является ленивым, поэтому вам нужно принудительно оценить его:
>>> import itertools
>>> itertools.combinations(range(4), 2)
<itertools.combinations object at 0x979a964>
>>> list(itertools.combinations(range(4), 2))
[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]
Понятно, что теперь делает combinations
?Если нет, поиграйте с ним.
... и синтаксис "stop = indices + (size,)"
Итак try это, это не будет кусаться:
>>> indices=list(itertools.combinations(range(4), 2))[0]
>>> size=4
>>> stops=indices + (size,)
>>> indices
(0, 1)
>>> stops
(0, 1, 4)
Синтаксис (x,)
создает одноэлементный кортеж (инвариантная последовательность - как list
, которую вы не можете изменить, но с круглыми скобками()
вместо квадратных []
).Вы можете использовать [x]
для создания одноэлементного списка, но (x)
будет неоднозначным, поскольку круглые скобки также используются для других целей, таких как аргументы функций и группировка.
Относительно map (), ...
Прочитайте документ , поиграйте с ним, это не сложно.