2012-02-09 16 views
6

Ho una lista in Mathematica, e sto cercando di ottenere ogni altro numero nella lista e memorizzarlo come una nuova lista.Come ottenere ogni altro elemento in una lista

Attualmente ho

ReadList["file",Number] 

che legge l'intero elenco, { x1, x2, x3, x4, ... }; Voglio solo selezionare ogni altro numero e memorizzarlo in un nuovo elenco, ad es. { x1, x3, x5, ... }.

Come fare?

risposta

8

Prova:

yourlist = {a, b, c, d, e, f, g, h}; 
(* use Span: search for Span or ;; in Documentation Center *) 
everyotheritemlist = yourlist[[1 ;; -1 ;; 2]]; 
(* or use Take *) 
Take[yourlist, {1, -1, 2}] 

Entrambi danno:

{a,c,e,g}  
+2

O il leggermente più corta 'yourlist [[1 ;; ;; 2]] '. –

+0

@Brett, davvero! – kglr

+0

Grazie mille, sapresti anche come cambiare la dimensione del passo per il comando "ListPlot". Elenca i passaggi unitari e si chiedeva se ci fosse un modo per cambiare questo? Grazie ancora per il tuo aiuto! – user1200775

1

Per le attività del genere ci sono sempre decine di modi creativi per fare in Mathematica. kguler già ti ha dato le vie canoniche, ma eccone un altro:

Partition[yourlist, 2]\[Transpose][[1]] 

(* 
==> {a, c, e, g} 
*) 

A proposito: C'è un sito dedicato Mathematica StackExchange a https://mathematica.stackexchange.com/. La comunità di Mathematica è sempre più in movimento in quella direzione, quindi potresti voler unirti a noi anche lì.

+0

Oh grazie per il riferimento! – user1200775

1

Un altro modo:

First /@ ReadList["test.dat", {Number, Number}] 
Problemi correlati