2016-10-11 7 views
2
data =: '"MARY","PATRICIA","LINDA","BARBARA","ELIZABETH"` 

    ];._1 data 
MARY  
,   
PATRICIA 
,   
LINDA  
,   
BARBARA 
,   
ELIZABETH 
(one more blank line here) 

Так что я хочу просто пропустить каждую вторую строку:Как просто пропустить элемент при создании нового списка?

]`(0&#);._1 data 
MARY  

PATRICIA 

LINDA  

BARBARA 

ELIZABETH 
(one more blank line here) 

не работает, как я думал.
И я встречаюсь с этой ситуацией довольно часто. Например, при использовании кода, как это:

]`(Do nothing. Just skip. Just SKIP!!!)@.(some condition) 
+0

Это пахнет как проблема XY. Разбирает строку разделенных запятыми значений, что вы пытаетесь сделать? Или вы пытаетесь получить все остальные строки массива? Или что-то другое? Например, '0 2 4 6 8 {array' доставит вам строки, но это, вероятно, не тот ответ, который вы ищете. – Dane

+0

Первоначально я хотел разобрать строку. Но позже это станет просто примером более общего вопроса. – Roman

+2

@roman, поскольку подсказки @bob, выбор элементов с '#', '{' или '^:' более уместен для того, что вы имеете в виду. Использование 'v @. c' означает, что вы должны делать _something_ со всеми элементами ввода. 'v ^: c' ближе. – Eelvex

ответ

2

Вы могли бы сделать это таким образом, используя символ ,',' (важно, что это список, а не атом) после удаления последнего LF, а затем с помощью Cut ;. снова это время, основанное на конечном значении.

(];._2) @: ((,','),~ }:) @: (];._1) data 

MARY  

PATRICIA 

LINDA  

BARBARA 

ELIZABETH 

Пустые строки на самом деле не заготовки, а артефакт формы.

$(];._2) @: ((,','),~ }:) @: (];._1) data 
5 1 9 

Вставьте Append ,/ чистит это до

,/ @: (];._2) @: ((,','),~ }:) @: (];._1) data 
    MARY  
    PATRICIA 
    LINDA  
    BARBARA 
    ELIZABETH 
     $,/ @: (];._2) @: ((,','),~ }:) @: (];._1) data 
    5 9 

Это на самом деле не решить «ничего не делать» вопрос с вприпрыжку, но ирония в желании ничего не делать, и в то же время, желая Пропустить! Пропуск будет делать что-то, не так ли? Это может предложить другой подход, такой как Копия #, может быть лучше Повестки дня @., но нужно было бы узнать конкретный случай.

0

, если вы хотите, чтобы пропустить каждый второй элемент списка, вы можете использовать (_2 {.\ ])

Другими словами: разбить список на пары и получить первый элемент каждой пары.

0

Несколько вариантов, чтобы отфильтровать каждый 2-й элемент списка:

mylist=: ];._1 data 
    (#~ 2 [email protected]| [email protected]#) mylist NB. retain even indexed items 
MARY  
PATRICIA 
LINDA  
BARBARA 
ELIZABETH 
    (_2 {.\ ]) mylist   NB. get first item of pairs 
MARY  
PATRICIA 
LINDA  
BARBARA 
ELIZABETH 

Несколько вариантов для синтаксического анализа эти данные:

> '","' splitstring }. }: data 
MARY  
PATRICIA 
LINDA  
BARBARA 
ELIZABETH 

    require 'csv' 
    > (',' ; '"') fixdsv data,LF 
MARY  
PATRICIA 
LINDA  
BARBARA 
ELIZABETH