2013-02-22 3 views
1

중첩 목록 내의 모든 목록에서 세 번째 요소를 제거하고 싶습니다.중첩 목록 내의 모든 목록 요소 제거

예를 들면,

lst = { {1, 0, 0}, {1, 1, 1}, {1, 1, 4} } 

그래서이 될 것

{ {1, 0}, {1, 1}, {1, 1} } 

내가 어떻게해야합니까?

+0

당신은 루프를 쓸 수 및 당신이 찾고있는 단지 값을 갖는 새 중첩 된 목록을 만들 수 있습니다. –

+0

죄송합니다, Mathematica를 처음 사용했습니다. 그것이 내가하는 방법을 이해하기를 원하는 것입니다. – fcpenha

+1

이전 질문에 대한 답변에서 사용한 이후로 지금까지 '사례'에 대한 설명서를 읽었을 것입니다. 해당 문서로 돌아 가면 동일한 기능을 사용하여 일치 패턴을 대체하는 방법을 찾을 수 있습니다. 동일한 결과를 얻는 다른 방법들, 특히'->'(* alias *'Rule')에 대한 문서를 연구하지만 한 번에 하나의 작은 질문을함으로써 Mathematica를 배우려는 시도를 중단하십시오. 이 프로그램은 잘 문서화되어 있으며 Wolfram은 튜토리얼을 제공합니다. Google 영역도 마찬가지입니다. –

답변

3

아직 :

lst = #[[1;;2]] & /@ lst 

또는 당신은 아마도 더 이상 하위 목록에서만 세 번째 요소를 삭제하려면 :

lst = Drop[#,{3}]& /@ lst 
+0

"Drop"은 긴 목록을 말하는 이유는 무엇입니까? – fcpenha

+0

귀하의 보조 사용자가 4 가지 요소를 가지고 있다면 drop은 {# 1, # 2, # 4}를 제공합니다. 이것은 질문에서 문자 그대로 묻는 것입니다. 첫 번째 솔은 # 2 후에 모든 것을 버린다. – agentp

3

이렇게하는 방법은 다양합니다.

lst = {{1, 0, 0}, {1, 1, 1}, {1, 1, 4}}; 

lst = lst[[All, {1, 2}]] 

{{1, 0}, {1,1}, {1,1}}

또는

lst = Transpose[Most[Transpose[lst]]] 

또는

lst = MapThread[Delete, {lst, Table[3, {Length[lst]}]}] 
를 전치없이