Я хочу прокрутить sys.argv со второго до предпоследнего аргумента. почему это не работает?
for arg in sys.argv[1: :len(sys.argv)-1] :
print arg
Я хочу прокрутить sys.argv со второго до предпоследнего аргумента. почему это не работает?
for arg in sys.argv[1: :len(sys.argv)-1] :
print arg
:
слишком много: sys.argv[1:len(sys.argv)-1]
. Также вы можете использовать отрицательные индексы: sys.argv[1:-1]
. 30.05.2014 У вас ошибка в коде: вы не должны ставить два двоеточия, а только одно. Вот как это работает:
Чтобы исключить n first элементов, используется синтаксис [n:]
.
Чтобы исключить n последние элементы, вам не нужно подсчитывать количество элементов в массиве. Вместо этого вы используете: синтаксис [:-n]
.
Если вы хотите исключить первые элементы x и последние элементы y, вы можете объединить оба: [x:y]
.
В вашем случае, чтобы получить массив без первого и последнего аргументов, вы можете просто сделать:
sys.argv[1:-1]
Как это:
for arg in sys.argv[1:-1]:
print arg
Ваша проблема в том, что у вас слишком много двоеточий, что приводит к расширенному фрагменту< /а>.
Из-за лишнего двоеточия в [1::len(sys.argv)-1]
(пробел между двоеточиями в вашей версии не нужен, и, возможно, это вас смутило), вы говорите:
1
...len(sys.argv)-1
.Очевидно, что если вы начнете со 2-го элемента последовательности, а затем сделаете шаг вперед на len(sequence) - 1
, вы дойдете до конца, и ничего не останется.
Если вы отбросите лишнее двоеточие, ваш код будет работать...
for arg in sys.argv[1:len(sys.argv)-1]:
print arg
... но Python позволяет вам использовать отрицательные индексы для подсчета с конца последовательности, которую вы нарезаете, поэтому вы можно заменить все это на:
for arg in sys.argv[1:-1]:
print arg
sys.argv
– это list
, поэтому вы можете применять нарезку, чтобы получить только определенную часть списка, например, если вы хотите выполнить итерацию только от второго элемента к предпоследнему. Как правило, если lst
является списком
lst[0]
является первым элементом списка, и
lst[-1]
является последним. Пример:
>>> x = [1,2,3,4,5,6]
>>> x[1:-1]
[2, 3, 4, 5]
С нарезкой ваш цикл for
должен выглядеть так:
for arg in sys.argv[1:-1]:
print(arg)