Python: существует ли C-подобный цикл?

Могу ли я сделать что-то подобное в Python?

for (i = 0; i < 10; i++): if someCondition: i+=1 print i 

Мне нужно пропустить некоторые значения на основе условия

EDIT: все предлагаемые решения предлагают обрезать исходный диапазон так или иначе, основываясь на уже известном состоянии. Это не полезно для меня, поэтому позвольте мне объяснить, что я хочу делать.

Я хочу вручную (т. Е. Без getopt) разобрать некоторые cmd-строки args, где каждое «ключевое слово» имеет определенное количество параметров, что-то вроде этого:

 for i in range(0,len(argv)): arg = argv[i] if arg == '--flag1': opt1 = argv[i+1] i+=1 continue if arg == '--anotherFlag': optX = argv[i+1] optY = argv[i+2] optZ = argv[i+3] i+=3 continue ... 

10 Solutions collect form web for “Python: существует ли C-подобный цикл?”

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

  • требуют разделенные запятыми аргументы, которые будут сгруппированы в следующее значение параметра, тогда вы можете использовать getopt или любой другой модуль.
  • или сделать более хрупкую собственную обработку:

     sys.argv.pop() cmd = {} while sys.argv: arg = sys.argv.pop(0) if arg == '--arg1': cmd[arg] = sys.argv.pop(0), sys.argv.pop(0) elif: pass print(cmd) 

Да, так я бы это сделал

 >>> for i in xrange(0, 10): ... if i == 4: ... continue ... print i, ... 0 1 2 3 5 6 7 8 9 

РЕДАКТИРОВАТЬ
На основе обновления к вашему оригинальному вопросу … Я бы предложил вам взглянуть на optparse

Странный путь:

 for x in (x for x in xrange(10) if someCondition): print str(x) 
 for (i = 0; i < 10; i++) if someCondition: i+=1 print i 

В python будет написано как

 i = 0 while i < 10 if someCondition i += 1 print i i += 1 

там вы идете, вот как писать ac for loop в python.

Вы должны использовать continue для пропуска значения, как в C, так и в Python.

 for i in range(10): if someCondition: continue print(i) 

Вероятно, вам действительно не нужны индексы, вам, вероятно, нужны фактические предметы. Лучшее решение, вероятно, будет таким:

 sequence = 'whatever' for item in sequence: if some_condition: continue do_stuff_with(item) 

Сначала вы можете превратить список argv в генератор:

 def g(my_list): for item in my_list: yield item 

Затем вы можете пройти через элементы, вызвав генератор по мере необходимости:

 my_gen = g(sys.argv[1:]): while True: try: arg = my_gen.next() if arg == "--flag1": optX = my_gen.next() opyY = my_gen.next() --do something elif arg == "--flag2": optX = my_gen.next() optY = my_gen.next() optZ = my_gen.next() --do something else ... except StopIteration: break 
  for i in xrange(0, 10): if i % 3 == 0 continue print i 

Будут только значения, которые не делятся на 3.

Если вам нужно перебрать что-то, и вам нужен индекс, используйте enumerate ()

 for i, arg in enumerate(argv): ... 

который делает то же самое, что и вопрос

 for i in range(0,len(argv)): arg = argv[i] 

Кажется, ваша проблема заключается в том, что вы должны зацикливать не сырые параметры, а анализируемые параметры. Я бы посоветовал вам подумать об изменении своего решения не использовать стандартный модуль (как и другие).

  • Синтаксис Python `for`: код блока против выражений генератора одиночной строки
  • Накопительное добавление при переходе по списку
  • Можете ли вы «перезапустить» текущую итерацию цикла Python?
  • Почему python использует «else» после циклов while и while?
  • Python: для цикла с файлами, как захватить следующую строку внутри forloop?
  • Удалить элемент в списке с помощью цикла for-loop
  • Пропустить первую строку (поле) в цикле с использованием файла CSV?
  • Как создать несколько флажков из списка в цикле for в python tkinter
  • Количество пирамид, вложенных в цикл
  • Область переменной в for-loop и while-loop
  • Цикл for-in Python, которому предшествует переменная
  • Python - лучший язык программирования в мире.