Вероятно, не самый эффективный, но функциональный программист во мне, вероятно, написал бы это.
import operator
from itertools import *
def inits(list):
for i in range(0, len(list)):
yield list[:i]
def tails(list):
for i in range(0, len(list)):
yield list[i+1:]
def withouts(list):
return imap(operator.add, inits(list), tails(list))
for elt, without in izip(l, withouts(l)):
...
import functools, operator
for elt in l:
without = filter(functools.partial(operator.ne, elt), l)
Я не думаю, что это правильно , что нужно сделать, но оно короткое. : -)