How to customize sklearn cross validation iterator by indices?

Actually, cross-validation iterators are just that: Iterators. They give back a tuple of train/test fold at each iteration. This should then work for you:

custom_cv = zip(train_indices, test_indices)

Also, for the specific case you are mentioning, you can do

import numpy as np
labels = np.arange(0, 10) % 2
from sklearn.cross_validation import LeaveOneLabelOut
cv = LeaveOneLabelOut(labels)

Observe that list(cv) yields

[(array([1, 3, 5, 7, 9]), array([0, 2, 4, 6, 8])),
 (array([0, 2, 4, 6, 8]), array([1, 3, 5, 7, 9]))]

Actually the above solution returns each row as a fold what one really needs is:

    [(train_indices, test_indices)] # for one fold

    [(train_indices, test_indices), # 1stfold
    (train_indices, test_indices)] # 2nd fold etc