Главная Длительная эволюция [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [ 35 ] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] Complement[{a, Ь, d, е, с}, {а, е}, {е, Ь}] {c,d] В конце данного раздела рассмотрим функции, осуществляющие структурные изменения в списках. Функция Partition в выражении Partition[Iist,n] разбивает список на неперекрывающиеся части длины п, начиная с первого элемента списка. Если число элементов в списке не делится нацело на п, то последние к {к <п) элементов удаляются из списка. Partition[{l,2,3,4,5},2] {{1,2},{3,4}} Эта же функция в выражении Partition[list,n,d] приводит к разбиению на части длины п с отступом d, т.е. первый элемент второго подсписка имел номер d+1 в исходном списке. Таким образом, подсписки перекрываются при d<n Partition[{l, 2,3,4,5,6,7,8,9}, 3,2] {{1,2,3},{3,4,5},{5,6,7},{7,8,9}} Partition[{l,2,3,4,5,6,7,8,9},3,4] {{1,2,3},{5,6,7}} Если функция Partition приводит к появлению дополнительного уровня в списке, то функция Flatten уменьшает их число. А именно Flatten в выражении Flatten[list] приводит к одноуровневому списку: Flatten[{l, {2, {3,4, {5,6}}}, {7,8}}] {1,2,3,4,5,6,7,8} а в выражении Flatten[list, п] убирает заголовки List только до уровня п включительно. Flatten[{l, {2, {3,4, {5,6}}}, {7,8}},2] {1,2,3,4,{5,6},7,8} m={{{a,b},{c,d},{e,f}}, {{1,2},{3,4},{5,6}}, {{aa,bb},{cc,dd},{ee,ff}}, {{11,12},{13,14},{15,1в}}} Список т содержит четыре элемента, каждый из которых является списком и состоит из трех списков по два элемента в каждом, которые являются символами или числами. Позиции этис символов и чисел можно охарактеризовать с помощью трех чисел - координат: первое указывает, в какой из строк находится рассматриваемый символ или число, второе - в каком Модификацией функции Flatten является функция Flatten At, которая применяет Flatten к частям списка. FlattenAt[{l,{2,{3,4,{5,6}}},{7,8}},3] {1,{2,{3,4,{5,6}}},7,8} Очень интересной функцией является Transpose. Если она применяется к списку, представляющему собой прямоугольную матрицу, то результатом будет транспонированная матрица. Пусть т= {{а,Ь,с},{1,2,3}}, тогда m / / MatrixForm Transpose[m] MatrixForm a b с 1 2 3 a 1 b 2 с 3 Более содержательную структурную перестройку вложенных списков можно осуществить в случае, когда список содерь жит более одного уровня и представляет не обычную двухмерь ную матрицу, а матрицу более высокой размерности. Рассмотрим в качестве примера трехмерную матрицу ИЗ списков строки оно содержится, третье - его положение в самом внутреннем списке. Таким образом, каждый символ или число можно рассматривать как матричный элемент Triijk Транспонирование матрицы т означает перестановку индексов. Всего возможны шесть транспозиций. Транспозиция {3,1,2} означает, что в новой матрице первый индекс есть второй индекс исходной матрицы, второй индекс есть прежний третий, а третий индекс - прежний первый. Приведем в качестве примера две транспозиции матрицы, или списка, т. Transpose[m,{2,l,3}] {{{а,Ь},{1,2},{аа,ЬЬ},{11,12}}, {{c,d},{3,4},{cc,dd},{l3,14}}, {{е,/},{5,6},{ее, },{15,16}}} Transpose[m,{3,l,2}] {{а,1,аа,11},{Ь,2,6Ь,12}}, {{c,3,cc,13},{d,4,dd,14}}, {{е,5,ее,15},{/,6, ,16}}} Последней функцией, которую мы упомянем в этом разделе, является функция Join, осуществляющая сцепление (конкатенацию) списков. Join[{a,b,c,},{l,2},{x,y}] {а,Ь,с,1,2,1,у} 4.3. Работа с векторами и матрицами Векторы в „Математике" трактуются как линейные, т.е. одноуровневые, списки: V = {ul,u2,u3}; матрицы как двухуровневые: т= {{mll,ml2,ml3},{m21,m22,m23}}, хотя компоненты векторов и матриц могут быть произвольными выражениями. Ввиду важной роли этих объектов в теоретических и прикладных вопросах в „Математике" определены несколько функций, предназначенных для работы с векторами и матрицами. [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [ 35 ] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] 0.0011 |