# to reverse a part of the string in place
a = [1,2,3,4,5]
a[2:4] = reversed(a[2:4]) # This works!
a[2:4] = [0,0] # This works too.
a[2:4].reverse() # But this doesn't work
Ответ 1
a[2:4] создает копию выбранного подсписчика, и эта копия меняется на a[2:4].reverse(). Это не меняет исходный список. Строки списков Python всегда создают копии - вы можете использовать
b = a[:]
чтобы скопировать весь список.
Ответ 2
Другим способом, который вы можете рассмотреть, является использование обратного фрагмента:
a[2:4] = a[3:1:-1]
Ответ 3
Просто используйте срез и отмените его.
a[2:4] = a[2:4][::-1]
Ответ 4
a [2: 4] - это копия списка a, которая построена с использованием 2,3,4 элементов в списке a. Первые два работают, потому что вы назначаете изменения в те пятна в исходном списке. Последний не работает, потому что вы не влияете на исходный список.
Ответ 5
Здесь странный пример и более сложное решение, использующее нарезку и немного список основных принципов.
Проблема: Обратный список в двух частях.
I/P: [1,2,3,4,5,6]
O/P: [3,2,1,6,5,4]
SOLN:
[item for i in range(0,len(l),len(l)/2) for item in l[i:i+len(l)/2][::-1]]