





да, вы можете выполнить нарезку, например, ls[:2] + ls[-2:], чтобы получить желаемый результат
Код:-
# [ 0, 1, 2, 3, 4, 5] for positive indices
lis=[ 1, 2, 3, 4, 5, 6]
# [-6,-5,-4,-3,-2,-1] for negative indices
# desired output: [1,2,5,6]
#Some options are
print(lis[:2]+lis[4:])
print(lis[:2]+lis[-2:])
print(lis[-6:-4]+lis[-2:])
print(lis[-6:-4]+lis[4:])
Выход:-
[1, 2, 5, 6]
[1, 2, 5, 6]
[1, 2, 5, 6]
[1, 2, 5, 6]
Попробуйте ls[2:-2] вместо ls[-2:2]
ls[2:-2] даст [3,4]. чего он не хотел..
Я прочитал документацию и попробовал несколько кодов, чтобы понять, почему ваш код не работает.
ясно, как показано в документации, нет проблем с тем, что шаг нарезки является отрицательным числом. Я думаю, проблема в том, что вы не можете дойти до конца списка (или начала, если ваш шаг отрицательный) и начать с другой стороны.
А чтобы код работал так, как вы хотите, вы можете использовать ls[:2] + ls[-2:], как было предложено в комментариях.
Если вы не возражаете против изменения исходного списка на месте, вы также можете удалить фрагмент в середине:
del ls[2:4]
ls станет:
[1, 2, 5, 6]
Демо: https://replit.com/@blhsing/StylishFuzzyНарушение авторских прав
Или lis.pop(3)
@PraysonW.Daniel Это удалит только один элемент с индексом 3. ОП также требует удаления элемента с индексом 2.
Вы можете параметризовать код, включив в него необходимое количество элементов с начала и с конца. Например -
ls = [1,2,3,4,5,6]
# desired output: [1,2,5,6]
start = 2 #no of elements needed from start
end = 1 #no of elements needed from end
ls[:start] + ls[-end:] #gives you desired output
не удовлетворяет желаемый результат..