컨테이너(Container)
컨테이너를 한국말로 표현하면 무언가를 담는 용기를 의미한다.
변수와 비슷한 개념이지만 조금은 다르다.
변수는 하나의 값만 담지만 컨테이너는 여러개의 값을 담을 수 있기 때문이다.
이를 테면 컨테이너 선박에 여러개의 상품을 적재할수 있듯이, 하나의 용기안에 여러개의 값을 담을수 있게 된다.
이렇게 담긴 데이터는 컨테이너 이름과 인덱스로 접근이 가능하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #python names = ['name1', 'name2', 'name3'] print(names) print(names[2]) #name3 user = ['programmer', 'seoul', 25] user[1] = 'busan' print(user) #['programmer', 'busan', 25] #ruby names = ['name1', 'name2', 'name3'] puts(names.class) # Array puts(names[0]) # name1 names[0] = 'name11' print(names) # ["name11", "name2", "name3"] | cs |
위의 코드는 기본적인 컨테이너의 사용법이다.
먼저 names라고 하는 변수를 생성하여, 여러개의 값들을 브라켓([]) 안에 넣는다.
컨테이너의 내부에 값은 모두 동일한 타입이 아니더라도 상관없다.
이 때 파이썬에서 이 변수의 타입은 리스트(list), 루비에서는 배열(Array)이 된다.
이렇게 생성된 컨테이너에 사용하는 방법은, 두 언어 모두 동일하게 인덱스로 접근한다.
여기서 주의해야 할 점은 컴퓨터에서는 0번지 부터 시작한다는 것이다.
따라서 컨테이너 변수의 뒤에 []를 붙이고, 이 안에 자신이 찾고자 하는 값의 인덱스를 넣어주면 변수를 가져 올 수 있다.
인덱스를 이용해서 데이터 값에 접근하고, 변경도 가능하다.
파이썬 - 리스트(List)
1 2 3 4 5 6 7 | #python al = ['A', 'B', 'C', 'D'] print(len(al)) # 4 al.append('E') print(al) #['A', 'B', 'C', 'D', 'E'] del(al[0]) print(al) #['B', 'C', 'D', 'E'] | cs |
컨테이너를 제공한다는 점에서 루비와 파이썬은 비슷하지만 내부의 함수가 조금 다른 모습을 보인다.
위의 코드는 이러한 파이썬 리스트의 내부 함수의 주요 메소드를 구현한 것이다.
먼저 len("리스트")는 해당 리스트의 길이를 반환한다.
"리스트".append는 뒤쪽에 새로운 데이터 값을 삽입하며, del("리스트")는 해당 값을 삭제하는 연산이다.
자세한 내용은 python documents를 참고하도록 하자
루비 - 배열(Array)
1 2 3 4 5 6 7 8 | #ruby al = ['A', 'B', 'C', 'D'] puts(al.length) # 4 al.push('E') print(al) # ["A", "B", "C", "D", "E"] al.delete_at(0) print("\n") print(al) # ["B", "C", "D", "E"] | cs |
루비도 파이썬에서 제공하는 것과 동일한 기능을 하는 메소드가 있다.
먼저, 길이 반환을 위해 해당 배열에 대해 length를 사용한다.
또한 뒤쪽에 데이터 삽입을 위해 push, 특정 인덱스에 데이터 삭제를 위해 delete_at을 사용한다.
모든 메소드를 다 언급할수 없으니 자세한 내용은 아래의 공식 문서를 참조하자.
루비 배열 가이드 문서
https://ruby-doc.org/core-2.4.1/Array.html
결론적으로, 언어에서 제공하는 데이터 타입의 메소드를 사용해서
많은 기능을 직접 구현하지 않고 이미 만들어진 메소드로 편리하게 사용할 수 있다.
출처 : 생활 코딩, 파이썬&루비
'개발' 카테고리의 다른 글
[파이썬&루비] 반복문(Iterator) - for (0) | 2017.05.29 |
---|---|
[파이썬&루비] 반복문(Iterator) - while (0) | 2017.05.29 |
[파이썬&루비] 입력과 출력(input/output) (0) | 2017.05.29 |
[파이썬&루비] 조건문(Conditional statements) (0) | 2017.05.29 |
[파이썬&루비] 변수(Variable) (0) | 2017.05.29 |
댓글