通过Python有效地循环,不包括当前元素

时间:2017-01-12 03:46:26

标签: python loops iteration

当遍历列表时,我想跟踪当前元素,然后将函数应用于其余元素。

例如,第一次迭代将打印出红色 apply_function 将被称为传递蓝色,绿色和黑色

第二次迭代将打印出蓝色 apply_function 将被称为传递红色,绿色和黑色

colors = ['red', 'blue', 'green', 'black']

for color in colors:
    print color
        ### iterate through everything EXCEPT the current color
        apply_function(other_colors)

3 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是:

colors = ['red', 'blue', 'green', 'black']

for i, color in enumerate(colors):
    print color
    ### iterate through everything EXCEPT the current color
    apply_function(colors[:i] + colors[i+1:])

这将只排除当前索引,如果您有重复的条目,它将起作用。

答案 1 :(得分:0)

遍历指数;复制一份;弹出副本中的项目。

>>> indices = range(len(colors))
>>> apply_f = print
>>> for i in indices:
    c = colors[:]
    apply_f(c.pop(i), c)


red ['blue', 'green', 'black']
blue ['red', 'green', 'black']
green ['red', 'blue', 'black']
black ['red', 'blue', 'green']
>>> 

答案 2 :(得分:0)

您可以通过以下方式实现:

colors = ['red', 'blue', 'green', 'black']

for index,color in enumerate(colors):
    print (color)
    apply_function(colors[:index] + colors[index+1:])