除了i之外,"Pythonic"用于循环整数0到k-1

Ale*_*all 6 python loops for-loop

我想创建一个for循环,它将通过整数0到k-1,除了整数i.(我正在比较k个项目的一些列表,我不需要将一个列表中的项目i与另一个列表中的项目i进行比较.)

我有一个相当简单的方法,但我一直认为这是一个更"Pythonic",优雅的方式来做到这一点.

我在做的是:

tocheck = range(k)
del(tocheck[i])
for j in tocheck:
Run Code Online (Sandbox Code Playgroud)

这很容易,但我喜欢Python的一件事就是它似乎总是有一个聪明的单行"Pythonic"技巧来做这样的事情.

谢谢.

Fat*_*ror 11

也许用 itertools.chain

from itertools import chain

for j in chain(range(i), range(i+1, k)):
    # ...
Run Code Online (Sandbox Code Playgroud)

  • +1我喜欢它避免在每次迭代中测试`j`的值,尽管对于任何非平凡的循环体,性能增益可能是最小的. (2认同)

en_*_*ght 2

这个怎么样:

for l in (j  for j in range(k) if j != i):
    ....
Run Code Online (Sandbox Code Playgroud)

这使用了一个生成器表达式,它可能被认为是“pythonic”,尽管表达式本身有点令人困惑,可能被认为不优雅。