как печатать список, пропускающий один элемент каждый раз в python без numpy?

данный

samplelist = [100,101,102,103,104,105,106,107,108,109] 

то я хочу вывод, как показано ниже:

 [100,[101,102,103,104,105,106,107,108,109]] [101,[100,102,103,104,105,106,107,108,109]] [102,[100,101,103,104,105,106,107,108,109]] 

Примечание: в первой строке выход 100 пропускается, т.е. list[0] , затем во втором list[1] строк list[1] пропускается.

Я попытался выскочить и отобразить, но в следующий раз он не покажет все элементы, которые выскочили. поэтому я попытался вставить их в конец цикла снова, но не повезло.

3 Solutions collect form web for “как печатать список, пропускающий один элемент каждый раз в python без numpy?”

простое понимание списка должно это сделать

 >>> samplelist = [100,101,102,103,104,105,106,107,108,109] >>> [[el for el in samplelist if el is not i] for i in samplelist] [[101, 102, 103, 104, 105, 106, 107, 108, 109], [100, 102, 103, 104, 105, 106, 107, 108, 109], [100, 101, 103, 104, 105, 106, 107, 108, 109], [100, 101, 102, 104, 105, 106, 107, 108, 109], [100, 101, 102, 103, 105, 106, 107, 108, 109], [100, 101, 102, 103, 104, 106, 107, 108, 109], [100, 101, 102, 103, 104, 105, 107, 108, 109], [100, 101, 102, 103, 104, 105, 106, 108, 109], [100, 101, 102, 103, 104, 105, 106, 107, 109], [100, 101, 102, 103, 104, 105, 106, 107, 108]] 

В основном он просматривает список, и для каждого элемента он выводит весь список, исключая текущий элемент.

В качестве альтернативы вы можете использовать выражение генератора

 >>> g = ([el for el in samplelist if el is not i] for i in samplelist) >>> for x in g: ... print(x) ... [101, 102, 103, 104, 105, 106, 107, 108, 109] [100, 102, 103, 104, 105, 106, 107, 108, 109] [100, 101, 103, 104, 105, 106, 107, 108, 109] [100, 101, 102, 104, 105, 106, 107, 108, 109] [100, 101, 102, 103, 105, 106, 107, 108, 109] [100, 101, 102, 103, 104, 106, 107, 108, 109] [100, 101, 102, 103, 104, 105, 107, 108, 109] [100, 101, 102, 103, 104, 105, 106, 108, 109] [100, 101, 102, 103, 104, 105, 106, 107, 109] [100, 101, 102, 103, 104, 105, 106, 107, 108] 

EDIT в соответствии с вашими новыми требованиями (т.е. должен быть включен пропущенный элемент):

 >>> g = ([i, [el for el in samplelist if el is not i]] for i in samplelist) >>> for x in g: ... print(x) ... [100, [101, 102, 103, 104, 105, 106, 107, 108, 109]] [101, [100, 102, 103, 104, 105, 106, 107, 108, 109]] [102, [100, 101, 103, 104, 105, 106, 107, 108, 109]] [103, [100, 101, 102, 104, 105, 106, 107, 108, 109]] [104, [100, 101, 102, 103, 105, 106, 107, 108, 109]] [105, [100, 101, 102, 103, 104, 106, 107, 108, 109]] [106, [100, 101, 102, 103, 104, 105, 107, 108, 109]] [107, [100, 101, 102, 103, 104, 105, 106, 108, 109]] [108, [100, 101, 102, 103, 104, 105, 106, 107, 109]] [109, [100, 101, 102, 103, 104, 105, 106, 107, 108]] 

используйте itertools.combinations() :

 import itertools a = [100,101,102,103,104,105,106,107,108,109] list(itertools.combinations(a, len(a)-1))[::-1] 

Вы можете использовать простой срез в понимании списка:

 >>> [samplelist[:i]+samplelist[i+1:] for i,_ in enumerate(samplelist)] [[101, 102, 103, 104, 105, 106, 107, 108, 109], [100, 102, 103, 104, 105, 106, 107, 108, 109], [100, 101, 103, 104, 105, 106, 107, 108, 109], [100, 101, 102, 104, 105, 106, 107, 108, 109], [100, 101, 102, 103, 105, 106, 107, 108, 109], [100, 101, 102, 103, 104, 106, 107, 108, 109], [100, 101, 102, 103, 104, 105, 107, 108, 109], [100, 101, 102, 103, 104, 105, 106, 108, 109], [100, 101, 102, 103, 104, 105, 106, 107, 109], [100, 101, 102, 103, 104, 105, 106, 107, 108]] 

Если вы хотите захватить пропущенный элемент:

 >>> [[samplelist[i],samplelist[:i]+samplelist[i+1:]] for i,_ in enumerate(samplelist)] [[100, [101, 102, 103, 104, 105, 106, 107, 108, 109]], [101, [100, 102, 103, 104, 105, 106, 107, 108, 109]], [102, [100, 101, 103, 104, 105, 106, 107, 108, 109]], [103, [100, 101, 102, 104, 105, 106, 107, 108, 109]], [104, [100, 101, 102, 103, 105, 106, 107, 108, 109]], [105, [100, 101, 102, 103, 104, 106, 107, 108, 109]], [106, [100, 101, 102, 103, 104, 105, 107, 108, 109]], [107, [100, 101, 102, 103, 104, 105, 106, 108, 109]], [108, [100, 101, 102, 103, 104, 105, 106, 107, 109]], [109, [100, 101, 102, 103, 104, 105, 106, 107, 108]]] 
  • как справиться с асимптотой / разрывом с Matplotlib
  • numpy.r_ не является функцией. Что это?
  • Почему numpy.dtype ('float64') особенный?
  • Довольно писать и печатать строковые элементы numpy ndarray (Python)
  • scipy csr_matrix из нескольких векторов, представленных в виде списка множеств
  • Сортировка массива строк с отрицательными номерами?
  • Параболоид (3D парабола)
  • Как получить доступ к элементам numpy ndarray?
  • Python - лучший язык программирования в мире.