본문 바로가기

💻프로그래밍/python

[파이썬 독학] 3. 리스트(list)

반응형

1) 리스트(list)란?

지금까지 숫자형과 문자열 데이터 타입에 대해 알아보았다. 하지만 숫자형과 문자열만으로만 프로그래밍을 하기에는 부족한 점이 많을 뿐 아니라 데이터의 양이 많아지고 그것을 각각 다른 변수에 선언한다면 한번에 관리하기 힘들어진다. 따라서 여러 개의 변수를 묶어서 한 번에 처리할 수 있도록 리스트(list)라는 개념이 필요해졌다.

 

 

 

2) 리스트 선언

 

 

리스트를 선언하는 방법은 대괄호 [ ]사이에 값을 넣어 표현하고 각 요소 사이에는 콤마(,)를 넣어 구분해준다.

 

리스트는 a처럼 빈 리스트로 만들수도 있고, b처럼 숫자로 , c처럼 문자열의 형태로 만들 수 있다. 또한 d처럼 숫자와 문자열을 혼합해서 하나의 리스트로 만들 수도 있고, e처럼 리스트 안에 또 다른 리스트를 넣어 선언할 수 있다.

 

 

 

 

3. 리스트 인덱싱(indexing)

지난시간 정리한 문자열과 마찬가지로 리스트 데이터 타입에도 각 요소들 간의 순서가 존재한다. 인덱싱이 무엇인지 다시 확인하고 싶다면 (클릭)

 

1) 기본적인 리스트 인덱싱

 

변수 '짱구는못말려'에 짱구, 유리, 철수, 맹구를 하나의 리스트로 선언하고, 짱구는못말려[0] 즉 0번째 있는 요소를 출력했을 때 , 맨 첫 번째로 있는 요소인 '짱구'가 출력됨을 알 수 있다.

 

 

 

2) 이중 리스트 (리스트 안에 또 다른 리스트가 있는경우)

 

 

그렇다면 리스트 안에 또 다른 리스트가 있을 때 어떻게 내가 원하는 데이터를 추출할 수 있을까? 예를 들어, 변수 짱구는못말려 중에 2021을 추출하고 싶을 때 2021이 있는 위치를 살펴보자. 우선 해당 리스트가 몇 번째에 있는지 파악하면 된다. 변수 짱구는못말려중, 해당 리스트는 4번째에 있고, 그중에서도 2021은 0번째 있는 값이다. 따라서 해당 요소를 추출할 때 짱구는못말려[4][0]을 출력해보면 2021이 출력됨을 알 수 있다.

 

 

 

4. 리스트 슬라이싱(slicing)

문자열과 마찬가지로 리스트에도 슬라이싱을 적용할 수 있다. 

 

1) 기본적인 리스트 슬라이싱

 

아까와 동일하게 변수 짱구는못말려를 선언한다. 그 후 짱구는못말려[0:] 즉, 0번째부터 끝까지를 출력해보면 각 요소들이 모두 출력되는 것을 알 수 있다. 이러한 경우 0도 생략하고 짱구는못말려[ : ] 로만 작성해도 동일한 값이 출력된다.

 

 

 

2) 이중 리스트 (리스트 안에 또 다른 리스트가 있는 경우)의 슬라이싱

 

리스트 안에 또 다른 리스트가 있는 경우의 슬라이싱의 경우도 위의 인덱싱 방법과 같은 맥락으로 접근하면 된다. 변수 짱구는 못말려 중, [2021,2022]의 값을 모두 출력하고 싶을 때 첫 번째로 해당 리스트가 있는 위치인 [4]를 적고 [ : ]로 0번 째부터 마지막까지 있는 요소들을 모두 출력해주면 [2021.2022]가 출력됨을 알 수 있다.

 

 

 

5. 리스트 연산

1) 여러 개의 리스트 합치기 (+)

 

리스트에서 + 는 두 리스트를 합치는 역할을 한다. 우리가 흔히 알고 있는 덧셈이라기보다는 붙여주는 느낌으로 합쳐진다.

 

 

이때 만약 리스트의 특정 값을 끼리의 덧셈을 하고 싶은 경우에는 인덱스 개념을 이용하여 더하고 싶은 값을 각각 추출해온 뒤 더해주면 된다.

 

 

TypeError : unsupported operand type(s) for + : 'int' and 'str'

다음 코드는 타입 에러가 발생했다. 그 이유는 다른 데이터 타입끼리는 연산을 할 수 없기 때문이다. 만약 a[0]의 값인 2021(정수형)과 '안녕'이라는 문자열을 더하여 '2021안녕'이라는 문자열을 만들고 싶다면, str(a[0]) 을 이용하여 정수형을 문자열로 바꿔준 다음 문자열끼리 더하면 된다.

 

 

 

2) 리스트 반복하여 출력 (곱셈*)

 

리스트에 있는 요소들을 반복하여 출력할 때는 *를 이용하면 그 숫자만큼 반복되어 새로운 리스트를 만들어낸다.

 

 

이때, 만약 리스트의 어떠한 요소에 곱하기를 하고 싶다면, 인덱스 개념을 이용하여 해당 요소의 위치를 적어주고 그것을 원하는 숫자만큼 곱해주면 곱셈이 된다.

 

 

 

 

6. 리스트 값 수정하기

리스트 내에 있는 데이터들을 추가, 삭제 등 수정하는 방법을 알아보자.

 

1) 리스트 값 수정(변경)하기

 

변수 짱구는못말려 리스트 중, 0번째 있는 데이터인 '짱구'를 '흰둥이'로 수정해보기로 한다. 이때도 인덱스 개념을 활용하여 짱구는못말려[0] = '흰둥이'를 한 뒤, 다시 해당 변수를 출력해보면 0번째 데이터가 수정되었음을 알 수 있다.

 

 

 

2) 리스트 값 추가하기 :  .append( ) 

 

해당 리스트에 데이터를 추가하고 싶다면 append( )함수를 사용하면 된다. 함수를 사용할 때는 변수 뒤에 .을 찍고 괄호 ( ) 안에 추가할 데이터를 적어주면 된다. append함수를 이용하여 '흰둥이'를 추가한 뒤 다시 변수를 출력해보면 리스트 맨 끝에 '흰둥이'값이 추가된 것을 알 수 있다.

 

 

 

3) 리스트 값 원하는 위치에 추가 :  .insert( ) 

 

append( ) 함수를 사용하면 임의적으로 맨뒤에 데이터가 추가되었다면, 이번에는 insert( )함수를 이용하여 내가 원하는 위치에 데이터를 추가시켜보자. insert( 내가 원하는 위치, 추가할 데이터 ) 를 적어주면 된다. 따라서 위의 코드를 보면 짱구는못말려.insert(0,'흰둥이')라는것은 해당 변수의 0번째에 '흰둥이를'추가해라!라는 의미가 되고, 결과적으로 '흰둥이'라는데이터가 0번째에 추가된 것을 알 수 있다.

 

 

 

4) 리스트 값 삭제하기 :  .remove( ) 

 

이번에는 remove()함수를 이용하여 변수 짱수는못말려 리스트에 있는 데이터 중 '흰둥이'를 삭제해보자. ( ) 괄호 안에 내가 삭제하고 싶은 데이터 값을 적어주면 된다. remove함수를 적용한 뒤 다시 변수를 출력했을 때 '흰둥이'가 삭제되었음을 알 수 있다.

 

 

 

 

7. 그 외의 리스트 관련 함수들

 

1) 리스트에 있는 값 순서대로 정렬 : .sort( ) 

 

sort( )함수를 이용하면 데이터들을 순서대로 정렬해주며, 숫자와 문자 모두 사용 가능하다.

 

 

 

2) 리스트 뒤집기 : .reverse( )

 

reverse( ) 함수를 이용하면 리스트에 있는 데이터들의 순서를 역순으로 뒤집어준다. 이때 주의할 점은, 각 데이터들을 순서에 맞게 정렬한 다음 거꾸로 뒤집는 게 아니라 기존에 있던 순서에서 그대로 뒤집는다.

 

 

 

3) 리스트 값 위치 반환(알려주기) : .index 

 

index( ) 함수를 이용하면 내가 찾고 싶은 데이터가 어느 위치에 있는지 알 수 있다. 위의 예를 a.index(7)이라는 것은 리스트 a에서 7은 어느 위치에 있는가?라는 의미이며, 그 값은 5로 즉 5번의 위치에 있다는 것이다.

 

 

 

4) 리스트에 포함된 요소 개수 세기 : .count( ) 

 

count( )의 괄호 안에 내가 세고 싶은 데이터를 적어주면 해당 리스트 안에 그 데이터가 몇 개 들어있는지 알려준다. 위의 예시에서는 리스트 a에 1이라는 데이터가 3개 들어있으므로 3을 출력한다.

 

반응형