Подтвердить что ты не робот

Как изменить часть (список) списка в Python?

Почему это не работает?

# 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
4b9b3361

Ответ 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]]

Проблема. Отмените буквы имени someones.

Например, Гарри Портер

O/p: yrraH retroP

SOLN:

' '.join(map(lambda x:x[::-1], s.split()))