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