Suppose I have a list:
l = [0, 1, 2, 3]
How can I iterate over the list, taking each item along with its complement from the list? That is,
for item, others in ...
print(item, others)
would print
0 [1, 2, 3]
1 [0, 2, 3]
2 [0, 1, 3]
3 [0, 1, 2]
Ideally I'm looking for a concise expression that I can use in a comprehension.
This is quite easy and understandable:
for index, item in enumerate(l):
others = l[:index] + l[index+1:]
You could make an iterator out of this if you insist:
def iter_with_others(l):
for index, item in enumerate(l):
yield item, l[:index] + l[index+1:]
Giving it's usage:
for item, others in iter_with_others(l):
print(item, others)