2015년 7월 28일 화요일

맥시마(maxima)의 리스트(list) 자료형

 리스트(list)는 맥시마의 기본 자료형 중 하나로서 다양한 표현식을 하나의 집합으로 묶어놓은 것이다. 기본적인 정의는 대괄호 [ ] 를 이용하며 각각의 요소는 콤마(,)로 구분한다. (공백 문자가 아님에 주의하자.)
위의 예는 lsA라는 변수에 리스트 [1, 2, 7, x+y]를 대입한 것이다. 리스트명은 임의의 식별자가 될 수 있다. 만약 x나 y가 어떤 값을 갖는 변수라면 그 값이 대신 들어간다. 그렇지 않다면 그냥 문자 상수로 인식된다.

 리스트 내부의 하나의 요소를 참조할 때에는 리스트명 뒤에 역시 대괄호를 이용하여 인덱스를 지정한다.


리스트의 요소로는 표현식(상수, 변수, 수학 함수 등등)과 리스트 자체도 리스트의 요소가 될 수 있다. 다음 예를 보자.
lsA는 네 개의 요소를 갖는 리스트인데 네 번째 요소는 리스트이다. 따라서 lsA[4]는 리스트 [a,b,c]인 것이다. 리스트 안의 리스트를 인덱싱하기 위해서는 위의 마지막 예와 같이 하면 된다.

 만약 값을 가진 변수를 이용하여 리스트를 정의한 후에 사용된 변수의 값을 바꾸면 어떻게 될까? 변경된 값이 리스트에 영향을 미칠까? 다음 예를 살펴보자.


만약 위와 같이 변수 a, b값을 이용하여 lsA를 정의했다면 정의된 그 시점의 a, b값이 lsA에 사용되는 것이지 변수 a, b 자체를 사용한 것은 아니다. 따라서 이후에 변수 a, b값을 바꾸는 것은 lsA에 아무런 영향을 미치지 않는다는 사실에 유의해야 한다.


그리고 리스트와 스칼라와의 산술 연산은 리스트 내의 모든 요소에 적용된다.


그리고 리스트끼리의 산술연산은 크기가 똑같아야 성립된다.

 리스트를 다루는 여러 함수 중에 많이 사용되는 몇 개만 소개하면 다음과 같다. 먼저 append() 함수는 두개의 리스트를 입력받아서 그 두개를 붙인 리스트를 생성한다.
리스트의 크기를 구하는 함수로서 length() 함수가 있다.

그리고 첫 번째 요소와 마지막 요소를 반환하는 함수는 각각 first(), last() 함수이다.


[표 1] 리스트 관련 함수 정리
기호
의미
append(lsA, lsB)
lsA와 lsB를 붙여서 새로운 리스트 생성
length(lsA)
lsA의 요소의 개수를 반환
first(lsA)
lsA의 첫 번째 요소
last(lsA)
lsA의 마지막 요소


댓글 없음:

댓글 쓰기