возвращает элементы 1-4, а не 2-4.

лизирую некоторый код Python, и я не знаю, что

pop = population[:]

означает. Это что-то вроде списков массивов в Java или как двумерный массив? Могу оценить некоторую помощь, спасибо.

 Macke30 мая 2011 г., 11:14
Связанный, очистка списка возможна только с помощью del pop [:] или pop [:] = [], а не pop.clear () .. (как вы делаете с dicts).
 Scott C Wilson02 июл. 2016 г., 22:44
Хорошее ТАКОЕ обсуждение фрагмента Python:stackoverflow.com/questions/509211/...

Ответы на вопрос(6)

Решение Вопроса

population, Еслиpopulation это список, эта строка создаст копию списка. Для объекта типаtuple илиstr, он ничего не будет делать (строка будет делать то же самое без[:]), и для (скажем) массива NumPy он создаст новое представление для тех же данных.

 André Caron29 мая 2011 г., 17:45
На всякий случай: срез возвращает неглубокую копию.
 Sven Marnach12 нояб. 2011 г., 16:53
@Eli: да, рядомlist.clear(), Однако потребуется некоторое время, пока это не приведет к значительному сокращению подобных вопросов по SO. :)
 Sven Marnach07 апр. 2014 г., 12:20
@MichaelGraczyk: Я предполагаю, что вы говорите о массивах NumPy здесь. Вместо того, чтобы использоватьA[deque(chain((k,), repeat(slice(None), len(A.shape) - 1)).rotate(axis)]Я бы почти всегда предпочелnumpy.rollaxis(A, axis, 0)[k], В общем, я редко сталкивался с примером использования, когда вам нужно было бы напрямую создатьslice() объекты. Если они вам все равно нужны, NumPy предоставляетs_ Помощник как альтернативный способ их создания.
 Rosh Oxymoron29 мая 2011 г., 20:05
list(l) всегда работает, более читабелен и гарантированно вернет копию даже с чем-то вродеnumpy.array
 Sven Marnach29 мая 2011 г., 18:47
@ilius: Может бытьl.copy() более читабелен, но не сработает.

что срез списка в целом является копией части списка. Например.population[2:4] вернет список, содержащий совокупность [2] и совокупность [3] (срезы исключают право). Оставляя левый и правый указатель, как вpopulation[:] по умолчанию они равны 0 и длине (населению) соответственно, выбирая таким образом весь список. Следовательно, это обычная идиома для создания списка.


используется для ограничения или нарезки в массиве, хэш
например:
[1: 5] для отображения значений от 1 до 5 включительно, т.е. 1-4
[начать конец]

в основном используется в массиве для нарезки, понимает переменную принятия скобок, которая обозначает среднее значение или ключ для отображения, и «:» используется для ограничения или разбиения всего массива на пакеты.

 Skamah One03 июл. 2013 г., 14:25
Нет причин сталкиваться с таким старым вопросом, у которого уже есть 5 похожих ответов и даже принятый ... Кроме того,a[1:5] возвращает элементы 1-4, а не 2-4.

а не просто назначает новое имя для уже существующего списка.

ломтик от начала последовательности до конца, обычно создавая мелкую копию.

(Ну этобольше чем это, но вам пока не нужно заботиться.)

он проходитslice объект (slice(None,None,None)) к одному из следующих методов:__getitem__, __setitem__ или же__delitem__, (На самом деле, если объект имеет__getslice__, который будет использоваться вместо__getitem__, но это устарело и не должно использоваться).

Объекты могут делать то, что они хотят с ломтиком.

В контексте:

x = obj[:]

Это позвонитobj.__getitem__ с переданным объектом слайса. Фактически, это полностью эквивалентно:

x = obj[slice(None,None,None)]

(хотя первый, вероятно, более эффективен, потому что он не должен искатьslice Конструктор - все это делается в байт-код).

Для большинства объектов это способ создать поверхностную копию части последовательности.

Следующий:

x[:] = obj

Это способ установить элементы (это вызывает__setitem__) на основеobj.

и, я думаю, вы можете догадаться, что:

del x[:]

звонки ;-).

Вы также можете передать разные кусочки:

x[1:4]

конструкцииslice(1,4,None)

x[::-1]

конструкцииslice(None,None,-1) и так далее. Дальнейшее чтение:Объясните нотацию Python

Ваш ответ на вопрос