如何在构建新列表时跳过元素?

时间:2016-10-11 14:40:01

标签: j

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)

3 个答案:

答案 0 :(得分:2)

你可以这样做,通过在删除最后一个LF之后附加一个private(重要的是这是一个列表而不是一个原子)然后再次使用剪切,','基于最终价值。

;.

空白线不是真正的空白,而是形状的神器。

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

MARY     

PATRICIA 

LINDA    

BARBARA  

ELIZABETH

插入附加 $(];._2) @: ((,','),~ }:) @: (];._1) data 5 1 9 清除此内容

,/

这并没有真正解决你的问题"什么都不做"跳过的问题,但有讽刺想要什么也不做,同时想要跳过!跳过会做某事,不会吗?这可能表明复制,/ @: (];._2) @: ((,','),~ }:) @: (];._1) data MARY PATRICIA LINDA BARBARA ELIZABETH $,/ @: (];._2) @: ((,','),~ }:) @: (];._1) data 5 9 等其他方法可能比议程#更好,但人们必须知道具体案例。

答案 1 :(得分:0)

如果要跳过列表的每个第二个元素,可以使用(_2 {.\ ])

换句话说:将列表分成几组并获得每对中的第一个元素。

答案 2 :(得分:0)

过滤掉列表中每个第二个元素的几个选项:

   mylist=: ];._1 data
   (#~ 2 -.@| i.@#) 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