当遍历列表时,我想跟踪当前元素,然后将函数应用于其余元素。
例如,第一次迭代将打印出红色, 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)
答案 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:])