Назначить кусочку списка Python из лямбды - PullRequest
3 голосов
/ 21 февраля 2011

Я знаю, что существуют определенные «специальные» методы различных объектов, которые представляют операции, которые обычно выполняются с операторами (например, int.__add__ для +, object.__eq__ для == и т. Д.), И что один из них is list.__setitem, который может присвоить значение элементу списка. Тем не менее, мне нужна функция, которая может назначить список в кусок другого списка.

По сути, я ищу выражение, эквивалентное some_list[2:4] = [2, 3].

Ответы [ 2 ]

8 голосов
/ 21 февраля 2011

Линия

some_list[2:4] = [2, 3]

также будет вызывать list.__setitem__().Вместо индекса он передает объект slice.Строка эквивалентна

some_list.__setitem__(slice(2, 4), [2, 3])
0 голосов
/ 21 февраля 2011

Зависит от версии Python. Для 3.2 __setitem__ выполняет работу:

Примечание. Нарезка производится исключительно следующими тремя методами. Звонок как a [1: 2] = b переводится на a [slice (1, 2, None)] = b и так далее. Пропущенные фрагменты всегда заполняются None.

...