2013-02-22 1 views
1

Я хотел бы исключить третий элемент из каждого списка во вложенном списке.Убрать элемент из каждого списка во вложенном списке

Е.Г.,

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

Так он стал бы

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

Как я должен это делать?

+0

Вы можете написать цикл и создать новый вложенный список с только значения, которые вы ищете. –

+0

Извините, я новичок в Mathematica. Это именно то, что я хочу понять, как это сделать. – fcpenha

+1

Я уверен, что к настоящему времени вы прочитали документацию для 'Cases', так как я использовал ее в своем ответе на ваш предыдущий вопрос. Вернитесь к этой документации, и вы найдете, как использовать ту же функцию для создания заметок для сопоставленных шаблонов. Существуют и другие способы достижения тех же результатов, в частности, изучить документацию для '->' (* alias * 'Rule'), но не пытайтесь изучить Mathematica, задавая один маленький вопрос одновременно; программа хорошо документирована, и Вольфрам предоставляет множество учебных пособий. Так же и Google-сфера. –

ответ

3

еще один:

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

или если вы хотите отказаться только третий элемент из, возможно, дольше подсписков:

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

Почему вы говорите «Drop» для более длинных списков? – fcpenha

+0

, если у вас есть 4 элемента, падение даст вам {# 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]}]}]