Использование product
из itertools
:
[u for i, (j, u) in product(range(len(temp)), enumerate(temp)) if j != i]
Это зависит от вашего списка (все значения должны быть уникальными), но это также работает для данного ввода
[v for u, v in product(temp, temp) if u != v]
Оба дают
[2, 3, 4, 0, 3, 4, 0, 2, 4, 0, 2, 3]
Вы можете даже превратить оба в итераторе, используя круглые скобки вместо квадратных.