Я работаю над следующей проблемой: Эта функция возвращает список всех возможных подписок в L длины n без пропусков элементов в L. Подсети в возвращаемом списке должны быть упорядочены в как они появляются в L, причем эти подсписки начинаются с меньшего индекса, находящегося в начале списка.Лучший способ получить подсписку в python
Example 1, if L = [10, 4, 6, 8, 3, 4, 5, 7, 7, 2] and n = 4
тогда ваша функция должна вернуть список [[10, 4, 6, 8], [4, 6, 8, 3], [6, 8, 3, 4], [8, 3, 4, 5], [3, 4, 5, 7], [4, 5, 7, 7], [5, 7, 7, 2]]
мое решение работает, но как я могу сделать его короче? Что это лучший способ сделать это?
def getSublists(L, n):
newN = n
myList = []
for i in range(len(L)):
orginalLen = L[i:n]
if(len(orginalLen) == n):
myList.append(L[i:n])
n = n + 1
else:
myList.append(L[i:n])
n = n + 1
if(newN == 1):
print(myList)
else:
print(myList[:len(myList)-(n-1)])
getSublists([10, 4, 6, 8, 3, 4, 5, 7, 7, 2],4)
getSublists([1], 1)
getSublists([0, 0, 0, 0, 0], 2)
OUTPUT
[[10, 4, 6, 8], [4, 6, 8, 3], [6, 8, 3, 4], [8, 3, 4, 5], [3, 4, 5, 7], [4, 5, 7, 7], [5, 7, 7, 2]]
[[1]]
[[0, 0], [0, 0], [0, 0], [0, 0]]
Почему у вас есть, что первый если-то еще? Вы делаете то же самое в обеих ветвях. – user2357112
Честно говоря, это единственный способ заставить его работать. Разница заключается в длинах. – Maddy