IT Language 연습실
Python List 본문
C언어 위주로 공부했던 필자는 python을 공부하면서 가장 혼라스러웠던 부분이 있다.
자료형의 개념이 C만큼이나 뚜렷하지 않다는 부분이 굉장히 혼란스러웠다.
JAVA나 C 같은 경우 어떤 변수를 생성하고 생성된 변수에 값을 넣기 전에 필시 해줘야 하는 부분이 있다.
어떤 타입의 데이터를 상자에 담을 것인지 명시를 해줘야 한다는 것이였는데
python은 달랐다.
python의 경우
box1 = 20
box2 = "Hello"
box3 = 3.5
box1은 정수형으로 받고 box2는 문자 box3 실수형으로 알아서 받는다.
참 신기하고도 혼란스러운 부분이였다.
하지만 그 혼란스러움은 list와 tuple 에서 또 일어나고야 말았다.
List (리스트) 와 tuple(튜플)의 경우 약간 배열의 느낌이 상당부분 강했다. 하지만 엄연히 배열과는 다르다.
자 그럼 본론으로 들어가보자.
오늘 소개할 친구들은 List와 Tuple이다. 먼저 List 부터 소개해보겠다.
----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
list (리스트) 란 무엇일까?
리스트라는 것은 원소들이 연속적으로 저장되는 형태의 자료형을 의미한다.
즉 box1 = 10; box2 = 20; box3 = 30; 이렇게 같은 자료형을 갖는 데이터들을 여러번 반복적으로 생성하고 값을 넣고 그러는 일들은 불편하다. 지금은 3개뿐이라서 잘 모를 수 있겠지만 100개 라고 생각해보자.
이러한 불편함을 겪을때 하나의 변수로 묶어서 여러개의 데이터를 저장할 수 있도록 한 것이 list라는 것이다.그리고 그것이 리스트이자 리스트가 등장하게된 이유라고 말할 수 있다.
list를 사용하기 위해서는 [ ] (대괄호) 로 데이터를 감싸 사용하면 된다.
// 리스트명 = [요소1, 요소2, 요소3 ... ]
list_box = [10,20,30]
자 만일에 C, JAVA를 공부했던 사람들이라면 여기까지는 배열의 느낌과 동일하게 받을 수 있을 것이다.
그런데 다음의 코드를 봐보자.
list_box = [ 10, 20, 'Hello', 4]
어떠한가? 만일에 리스트를 배열 개념으로 접근해서 이해를 하려고 그랬는데 서로 다른 타입의 데이터들을 묶었다.
혼란스럽지 않은가? 절대 C에서는 있을 수 없는 일이다...
숫자와 문자가 혼합되어서 list_box라는 변수에 하나로 묶여있다니..
즉, 리스트 안에는 어떠한 자료형도 포함시킬 수 있다 라는 의미를 갖는데
그럼 도대체 리스트와 배열의 차이는 무엇일까? 궁금해질 것이다.
이에 대해서는 따로 정리하여 페이지에 올리도록 하겠다.
우선 리스트에 대한 이해를 명확하게 가져가자.
다시 본론으로 돌아와서
list는 서로 다른 데이터 타입의 데이터들을 하나의 변수로 묶을 수 있다.
이뿐만이 아니다. 다음과 같이 된다.
list_box = [10,20,'Hello',[10,20]]
그렇다 [ ] 대괄호 안에 [ ] 대괄호로 묶은 데이터들이 또 들어가 있다.
그렇다 list안에 list가 있는 것인데. 마치 2차원 배열을 연상시킨다.
또 배열을 연상시키는 것중 하나가 다음과 같다.
list_box = [10,20,'Hello',[10,20]]
print(list_box[0])
print(list_box[3][1])
위 코드를 실행시켜보면 알겠지만
출력된 결과는 10, 20 이라는 값이 출력되는 것을 확인할 수 있다.
즉, 각 인덱스에 접근하여 값을 출력하는 형식이 된다.
또 2차원 배열처럼 리스트안에 리스트 값을 출력하기 위해서도 index를 사용해 직접 접근이 가능하다.
어떠한가 배열과 비슷한 느낌이 들지 않는가?
-------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------
그럼 다음으로 리스트를 활용한 연산 에 대해서 알아보자.
더하기
list_box1 = [10,20,30]
list_box2 = [40,50,60]
list_box1 + list_box2
//결과 [10,20,30,40,50,60]
반복
list_box1 = [10,20,30]
list_box2 = [40,50,60]
list_box1 * 2
//결과 [10,20,30,10,20,30]
리스트 요소 값 수정하기
list_box = [10,20,30]
list_box[2] = 40;
print(list_box)
//결과 [10,20,40]
함수를 통한 연산
길이 구하기
list_box1 = [10,20,30]
print(len(list_box1))
//결과 3
삭제
list_box = [10,20,30]
del(list_box[2])
print(list_box)
리스트 내부 함수를 통한 연산
추가
리스트 내부 함수에는 추가를 위해서 append ( ) 라는 함수가 존재한다.
list에 [10, 20, 30] 이라고 묶여있는 데이터들이 존재한다고 치자. 30 뒤에 40이라는 값을 추가하고 싶다면
append ( ) 함수를 사용해서 리스트 맨 마지막에 요소를 추가해주면 되는 것이다. 쓰임은 다음과 같다.
list_box = [10,20,30]
list_box.append(40)
print(list_box)
//출력 결과 [10,20,30,40]
삽입
리스트 내부 함수에서는 값을 N번째 자리에 값을 삽입을 위헤서 insert () 라는 함수가 존재한다.
삽입이라고 해서 그렇지 사실 추가와 얼추 비슷한 개념이다
append는 마지막 요소로 추가하는 예를 들어 C++에서 push_back 과 같은 원리이다.
insert는 원하는 위치에 값을 추가하겠다. 라는 의미가 된다. 쓰임은 다음과 같다.
list_box = [10,20,30]
list_box.insert(0, 5)
print(list_box)
//출력결과 [5,10,20,30]
정렬
리스트 안에 들어 있는 값을 정렬하기 위해서는 sort라는 함수가 존재한다. C나 JAVA 겹친다.
list_box.sort() 사용시 기본 오름차순 정렬되고 있음을 확인할 수 있다.
뒤집기
값을 반전시키는 거라고 생각하면 될 것 같다. 10. 20, 30 이라는 값이 있다면 30, 20 , 10
list_box.reverse ( )
위치반환
찾고 싶은 값이 리스트에서 현재 몇번째에 위치하는지 알아내기 위한 함수이다.
예를들어 [10,20,30] 이라는 요소를 갖는 리스트가 있는데 그 리스트에서 10이라는 값을 리스트안에 찾고 싶다면
list_box.index(10) 라고만 입력하면 된다.
그럼 10은 0번째에 있다고 출력될 것이다.
개수
현재 찾고자 하는 수의 개수는 리스트 안에서 몇개가 존재하는지 알아내기 위한 함수로 count()함수가 존재한다.
list_box.count(10)
결과는 1이라고 출력될 것이다.
pop( ) 함수
list에는 pop() 이라는 함수가 존재한다. 이는 스택이나 큐에서 사용하던 방식인데.
list의 가장 마지막 값을 뺀다.
예를들어 [10,20,30] 이라는 요소를 갖는 list가 존재한다고 치자.
list_box.pop() 이라고 하고 print(list_box) 하게 되면
[10,20] 만 출력되는 것을 보면 30은 빠졌음을 확인할 수 있다.
자 그러면 정리를 좀 해보자.
list - 원소들이 연속적으로 저장되는 형태의 자료형이고
1) 삽입, 삭제, 갱신이 가능하다.
2) 서로 다른 자료형을 갖는 데이터들을 묶을 수 있다.
3) 요소 값들은 중복이 가능하다.
------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------
'python' 카테고리의 다른 글
Python Tuple (0) | 2024.03.24 |
---|