Supponiamo di volere il primo elemento, dal 3 ° al 200 ° elemento, e l'elemento 201st attraverso l'ultimo elemento del gradino 3, da un elenco in Python.Python: sintassi più breve per sezioni con spazi vuoti?
un modo per farlo è con l'indicizzazione distinto e la concatenazione:
new_list = old_list[0:1] + old_list[3:201] + old_list[201::3]
C'è un modo per fare questo con un solo indice su old_list
? Mi piacerebbe qualcosa di simile alla seguente (so che questo non funziona sintatticamente in quanto indici delle liste non possono essere liste e dal momento che Python purtroppo doesn't have slice literals, io sono solo in cerca di qualcosa di simile):
new_list = old_list[[0, 3:201, 201::3]]
posso raggiungere alcuni dei questo passando agli array NumPy, ma sono più interessato a come farlo per gli elenchi Python nativi. Potrei anche creare a slice maker o qualcosa di simile, e possibilmente armare forte nel darmi un equivalente oggetto fetta per rappresentare la composizione di tutte le mie fette desiderate.
Ma sto cercando qualcosa che non implichi la creazione di una nuova classe per gestire le fette. Voglio solo concatenare la sintassi della slice e inserirla nella mia lista e far capire alla lista che significa ottenere separatamente le slice e concatenare i loro rispettivi risultati alla fine.
"Python sfortunatamente non ha primitive di slice" Neanche 'slice'? –
Scusate, avrei dovuto dire letterali di sezione, non affettare le primitive. Cioè, non puoi semplicemente aggirare la sintassi '(0: 10: 2)' come se fosse esso stesso un oggetto che rappresentava sempre degli indici. Devi passare attraverso il noioso ulteriore livello di creazione del tuo oggetto fetta, che distrugge tutte le sottigliezze della sintassi della sezione. Vedi la mia [domanda che è anche collegata in precedenza] (http://stackoverflow.com/questions/13706258/passing-python-slice-syntax-around-to-functions). – ely