Ou, plus généralement, à quelque chose comme ceci:
from itertools import chain
new_list = list(chain(a[0:2],[a[4]], a[6:]))
Cela fonctionne avec d'autres séquences, et est susceptible d'être plus rapide.
Ou vous pourriez faire ceci:
def chain_elements_or_slices(*elements_or_slices):
new_list =[]for i in elements_or_slices:if isinstance(i, list):
new_list.extend(i)else:
new_list.append(i)return new_list
new_list = chain_elements_or_slices(a[0:2], a[4], a[6:])
Mais attention, cela conduirait à des problèmes si certains des éléments de votre liste étaient eux-mêmes des listes.
Pour résoudre ce problème, appliquez l'une des solutions précédentes, ou de remplacer a[4] avec a[4:5] (ou plus généralement a[n] avec a[n:n+1]).
15
Supposons que
a =['a','b','c',3,4,'d',6,7,8]
et la liste des index est stocké dans
b=[0,1,2,4,6,7,8]
alors une simple solution en ligne sera
c =[a[i]for i in b]
1
La définition suivante pourrait être plus efficace que la première solution proposée
def new_list_from_intervals(original_list,*intervals):
n = sum(j - i for i, j in intervals)
new_list =[None]* n
index =0for i, j in intervals :for k in range(i, j):
new_list[index]= original_list[k]
index +=1return new_list
Essayer
new_list = a[0:2] + [a[4]] + a[6:]
.Ou, plus généralement, à quelque chose comme ceci:
Cela fonctionne avec d'autres séquences, et est susceptible d'être plus rapide.
Ou vous pourriez faire ceci:
Mais attention, cela conduirait à des problèmes si certains des éléments de votre liste étaient eux-mêmes des listes.
Pour résoudre ce problème, appliquez l'une des solutions précédentes, ou de remplacer
a[4]
aveca[4:5]
(ou plus généralementa[n]
aveca[n:n+1]
).Supposons que
et la liste des index est stocké dans
alors une simple solution en ligne sera
La définition suivante pourrait être plus efficace que la première solution proposée
alors vous pouvez l'utiliser comme ci-dessous