Это довольно просто действительно:
a[start:stop] # items start through stop-1
a[start:] # items start through the rest of the array
a[:stop] # items from the beginning through stop-1
a[:] # a copy of the whole array
существует также эти step
значение, которое может использоваться с любым вышеупомянутым:
a[start:stop:step] # start through not past stop, by step
ключевой пункт для запоминания - то, что эти :stop
значение представляет первое значение, которое является не в выбранной части. Так, различием между stop
и start
является выбранное число элементов (если step
1, значение по умолчанию).
другая функция - то, что start
или stop
может быть отрицательны число, что означает, что оно рассчитывает от конца массива вместо начала. Так:
a[-1] # last item in the array
a[-2:] # last two items in the array
a[:-2] # everything except the last two items
Точно так же step
может быть отрицательное число:
a[::-1] # all items in the array, reversed
a[1::-1] # the first two items, reversed
a[:-3:-1] # the last two items, reversed
a[-3::-1] # everything except the last two items, reversed
Python добр к программисту, если существует меньше объектов, чем Вы просите. Например, если Вы просите [1 114], и a
только содержит один элемент, Вы получаете пустой список вместо ошибки. Иногда Вы предпочитали бы ошибку, таким образом, необходимо знать, что это может произойти.
режущий оператор []
на самом деле используется в вышеупомянутом коде с slice()
объект с помощью :
нотация (который только допустим в [1 120]), т.е.:
a[start:stop:step]
эквивалентно:
a[slice(start, stop, step)]
объекты Части также ведут себя немного по-другому в зависимости от количества аргументов, так же к [1 121], т.е. и slice(stop)
и slice(start, stop[, step])
поддерживаются. Для пропуска определения данного аргумента можно было бы использовать None
, так, чтобы, например, a[start:]
было эквивалентно [1 126], или a[::-1]
эквивалентно [1 128].
, В то время как :
- базирующаяся нотация очень полезна для простого разрезания, конкретного вида использования [1 130], объекты упрощают программное поколение разрезания.
Вот ответ, который у меня сработал. Оказывается, это проблема x64 против x32 и Rails 2.3.2.
Ответ, который я получил отсюда ( http://osdir.com/ml/RubyonRailsTalk/2009-06/msg01775.html ):
На случай, если у кого-то есть то же самое проблема после долгой борьбы моя машина с Windows XP x64 с MySQL 5.1.30 (x64) и Rails 2.3.2 установлены, это предложение выше. помог мне. Загрузите libMySql.dll отсюда ( http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/ ) и поместив его в рубин \ bin, решил проблема.
Эта ошибка возникает, если в корне диска находится файл с именем "Program". Например, вы пытаетесь выполнить "C:\Program Files\SomeApp\Bin\SomeExe.Exe", если он существует, он пытается выполнить "C:\Program". В некоторых ситуациях файл с таким именем создается, если Вы забыли процитировать "C:\Program Files..." с некоторыми командами командной строки. Это, конечно, относится и к диску D: и т.д.
Эта ошибка часто возникает, если вы пытаетесь запустить службы, но может возникнуть и в других ситуациях.
Простое удаление файла C:\Program или D:\Program и т.д. решает эту проблему.
.