跳过python中range函数中的值

Dav*_*vid 37 python loops for-loop range

什么是循环遍历一系列数字并跳过一个值的pythonic方法?例如,范围从0到100,我想跳过50.

编辑:这是我正在使用的代码

for i in range(0, len(list)):
    x= listRow(list, i)
    for j in range (#0 to len(list) not including x#)
        ...
Run Code Online (Sandbox Code Playgroud)

njz*_*zk2 68

您可以使用以下任何一种:

# Create a range that does not contain 50
for i in [x for x in xrange(100) if x != 50]:
    print i

# Create 2 ranges [0,49] and [51, 100] (Python 2)
for i in range(50) + range(51, 100):
    print i

# Create a iterator and skip 50
xr = iter(xrange(100))
for i in xr:
    print i
    if i == 49:
        next(xr)

# Simply continue in the loop if the number is 50
for i in range(100):
    if i == 50:
        continue
    print i
Run Code Online (Sandbox Code Playgroud)

  • `xr = xrange(100).__ iter __()`有效 (3认同)
  • (1) 如何创建两个列表?`xrange(100)` 不是一个列表。您可以通过返回生成器来避免创建第二个列表:`for i in (x for x in xrange(100) if x is not 50)` (2认同)
  • #2 使用 Python 3.x:`...list(range(50)) + list(range(51, 100)):` (2认同)

Loc*_*cke 12

除了 Python 2 方法之外,这里还有 Python 3 的等效方法:

# Create a range that does not contain 50
for i in [x for x in range(100) if x != 50]:
    print(i)

# Create 2 ranges [0,49] and [51, 100]
from itertools import chain
concatenated = chain(range(50), range(51, 100))
for i in concatenated:
    print(i)

# Create a iterator and skip 50
xr = iter(range(100))
for i in xr:
    print(i)
    if i == 49:
        next(xr)

# Simply continue in the loop if the number is 50
for i in range(100):
    if i == 50:
        continue
    print(i)
Run Code Online (Sandbox Code Playgroud)

范围在 Python 2 中是列表,在 Python 3 中是迭代器。