Python: ¿hay un C-como para bucle disponible?

¿Puedo hacer algo como esto en Python?

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

Necesito poder omitir algunos valores basados ​​en una condición

EDITAR: hasta ahora, todas las soluciones sugieren eliminar el rango inicial de una forma u otra, según una condición ya conocida. Esto no es útil para mí, así que déjame explicarte lo que quiero hacer.

Quiero analizar de forma manual (es decir, sin opción) algunos argumentos de línea cmd, donde cada ‘palabra clave’ tiene un cierto número de parámetros, algo como esto:

 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 ... 

Hay dos cosas que podrías hacer para resolver tu problema:

  • requiera argumentos separados por comas que se agruparán en el siguiente valor de opción, podría usar getopt , o cualquier otro módulo en ese momento.
  • O hacer un procesamiento propio más frágil:

     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) 

Sí, así es como lo haría.

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

EDITAR
Basado en la actualización de su pregunta original … Le sugiero que eche un vistazo a optparse

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

En python se escribiría como

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

hay que ir, así es como se escribe ac para loop en python.

Modo extraño:

 for x in (x for x in xrange(10) if someCondition): print str(x) 

Debe usar continue para omitir un valor, tanto en C como en Python.

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

Probablemente no necesite realmente los índices, probablemente necesite los elementos reales. Una mejor solución probablemente sería así:

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

Primero podrías convertir la lista argv en un generador:

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

A continuación, puede recorrer los elementos, invocando el generador según sea necesario:

 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 

Sólo se mostrarán valores que no sean divisibles por 3.

Si necesita iterar sobre algo y necesita un índice, use enumerate ()

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

que hace lo mismo que el que pregunta

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

Su problema parece ser que usted debe hacer un bucle, no parámetros sin procesar sino parámetros analizados. Le sugiero que considere cambiar su decisión de no usar el módulo estándar (como los otros).

 increament = 4 #say for i in range(n): #write your code here n=n+increment 

Esta podría ser la solución simple al problema si solo desea recorrer la matriz omitiendo 4 miembros.