Что значит?
Я анализирую некоторый код Python, и я не знаю, что
pop = population[:]
средства. Это что-то вроде списков массивов в Java или как двумерный массив?
Ответы
Ответ 1
Это нарезка, и то, что она делает, зависит от типа population
. Если population
- это список, эта строка создаст копию списка. Для объекта типа tuple
или str
он ничего не сделает (строка будет делать то же самое без [:]
), а для (скажем) NumPy-массива он создаст новое представление для тех же данных.
Ответ 2
Это также может помочь узнать, что фрагмент списка вообще делает копию части списка. Например. population[2:4]
вернет список, содержащий популяцию [2] и популяцию [3] (разрезание справа). Оставляя левый и правый индекс, как в population[:]
, они по умолчанию равны 0 и длине (совокупность) соответственно, тем самым выбирая весь список. Следовательно, это распространенная идиома, чтобы сделать копию списка.
Ответ 3
хорошо... это действительно зависит от контекста. В конечном итоге он передает slice
объект (slice(None,None,None)
) одному из следующих способов: __getitem__
, __setitem__
или __delitem__
. (На самом деле, если объект имеет __getslice__
, который будет использоваться вместо __getitem__
, но теперь он устарел и не должен" t).
Объекты могут делать то, что они хотят с помощью среза.
В контексте:
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
Ответ 4
Это срез от начала последовательности до конца, обычно создавая мелкую копию.
(Ну, это больше, чем это, но вам пока не нужно заботиться.)
Ответ 5
Создает копию списка, вместо того, чтобы просто назначить новое имя для уже существующего списка.
Ответ 6
[:]
используется для ограничения или разрезания в массиве, хэш
например:
[1: 5] для отображения значений между 1 включительно и 5 эксклюзивных i.e 1-4
[Начало: конец]
в основном используется в массиве для нарезки, понимает переменную accept accept, которая означает среднее значение или ключ для отображения, а ":" используется для ограничения или разрезания всего массива на пакеты.