WedX - журнал о программировании и компьютерных науках

Как прокручивать цикл for от одного элемента к другому?

Я хочу прокрутить sys.argv со второго до предпоследнего аргумента. почему это не работает?

for arg in sys.argv[1: :len(sys.argv)-1] :
    print arg  
30.05.2014

  • Вы поставили : слишком много: sys.argv[1:len(sys.argv)-1]. Также вы можете использовать отрицательные индексы: sys.argv[1:-1]. 30.05.2014

Ответы:


1

У вас ошибка в коде: вы не должны ставить два двоеточия, а только одно. Вот как это работает:

  • Чтобы исключить n first элементов, используется синтаксис [n:].

  • Чтобы исключить n последние элементы, вам не нужно подсчитывать количество элементов в массиве. Вместо этого вы используете: синтаксис [:-n].

  • Если вы хотите исключить первые элементы x и последние элементы y, вы можете объединить оба: [x:y].

В вашем случае, чтобы получить массив без первого и последнего аргументов, вы можете просто сделать:

sys.argv[1:-1]

Как это:

for arg in sys.argv[1:-1]:
    print arg
30.05.2014
  • @ZeroPiraeus: я подумал, что это достаточно ясно, поскольку я предоставил правильный синтаксис и объяснил, как работает синтаксис. Поскольку кажется, что это не так, я отредактировал свой ответ, включив фактическую ошибку в код OP. 30.05.2014
  • Спасибо за это ... так как OP хочет знать, почему это не работает? Я думаю, важно сказать им ... в любом случае, отрицательный голос заменен на положительный :-) 30.05.2014
  • Я подумал, что это объяснение было отличным примером медленного создания синтаксиса по шагам, а затем (и только тогда) предоставления фактического исправления кода. 31.05.2014


  • 3

    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)
    
    30.05.2014
  • Этот ответ не устраняет фактическую ошибку, которая представляет собой дополнительное двоеточие в фрагменте. 30.05.2014
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]