당신은 주제를 찾고 있습니까 “파이썬 리스트 – 혼자 공부하는 파이썬 18강 – 리스트 기본“? 다음 카테고리의 웹사이트 ppa.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://ppa.maxfit.vn/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 윤인성 이(가) 작성한 기사에는 조회수 24,052회 및 좋아요 391개 개의 좋아요가 있습니다.
파이썬 리스트 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 혼자 공부하는 파이썬 18강 – 리스트 기본 – 파이썬 리스트 주제에 대한 세부정보를 참조하세요
이번 강의부터 \”확실하게 이해하지 못했는데 넘어가는 것\”이 쌓이면 확인문제 풀 때 폭발이 날 수 있으니 + 강의마다 확실하게 이해하고 코드도 쳐보고 넘어가주세요…!
목이 완전히 나가서 좀 갈라지고 그러는데 양해 부탁드립니다 ;ㅁ; [병원에서 약 먹으면 금방 나을거에요 했는데 안 나아서 이거 올리고 또 병원으로]….
파이썬 리스트 주제에 대한 자세한 내용은 여기를 참조하세요.
[python] 파이썬 리스트(list) 정리 및 예제 (1탄 기본편)
안녕하세요. BlockDMask 입니다. 오늘은 파이썬 리스트(list) 자료형에 대해서 정리를 해보려고 합니다. 일련의 여러 값들을 다룰 때 편하게 사용할 …
Source: blockdmask.tistory.com
Date Published: 7/23/2022
View: 9624
파이썬 코딩 도장: 10.1 리스트 만들기
리스트와 튜플 사용하기. 지금까지 변수에는 값을 한 개씩만 저장했습니다. a = 10 b …
Source: dojang.io
Date Published: 11/29/2022
View: 6511
07. 파이썬 리스트(List) 자료형 – planharry
07. 파이썬 리스트(List) 자료형 · 1. 숫자형 · 2. 문자열 자료형 · 3. 리스트 자료형 ◁(이번 장에서 배울 내용) · 4. 튜플 자료형 · 5. 딕셔너리 자료형 · 6.
Source: planharry.tistory.com
Date Published: 10/3/2021
View: 7123
[파이썬] 리스트(List) 자료형과 다양한 활용 방법의 예제
리스트(List) 자료형. 파이썬에는 다른 언어와 비슷하게 자료를 배열과 같이 사용하는 방법이 있습니다. 다른 언어와 같이 배열과 비슷한 특징이 …
Source: reakwon.tistory.com
Date Published: 8/30/2021
View: 628
2.9 파이썬에서 리스트 자료형 다루기 – 데이터 사이언스 스쿨
파이썬 버전 2에서는 range 명령만 쓰면 되지만 파이썬 버전 3에서는 range 명령으로 만들어진 값을 list 명령을 사용하여 명시적으로 리스트로 바꾸어야 한다. b = list( …
Source: datascienceschool.net
Date Published: 7/20/2022
View: 8452
[Python 문법] list 자료형
[Python 문법] list 자료형. 12 Sep 2017. Reading time ~5 minutes. 리스트의 생성. 리스트 자료형은 순차적인 데이터를 나타내는데 사용한다.Source: nachwon.github.io
Date Published: 2/28/2021
View: 1828
주제와 관련된 이미지 파이썬 리스트
주제와 관련된 더 많은 사진을 참조하십시오 혼자 공부하는 파이썬 18강 – 리스트 기본. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
주제에 대한 기사 평가 파이썬 리스트
- Author: 윤인성
- Views: 조회수 24,052회
- Likes: 좋아요 391개
- Date Published: 2019. 7. 12.
- Video Url link: https://www.youtube.com/watch?v=dYykqm41jfY
[python] 파이썬 리스트(list) 정리 및 예제 (1탄 기본편)
안녕하세요. BlockDMask 입니다.
오늘은 파이썬 리스트(list) 자료형에 대해서 정리를 해보려고 합니다.
일련의 여러 값들을 다룰 때 편하게 사용할 수 있는데요. 리스트에 접근하는 방법, 값을넣고 빼는 방법, 리스트의 길이를 구하거나, 리스트 값을 삭제하는 방법.
리스트에서 +기호와 * 기호가 뜻하는 것, 리스트 정렬하는 방법, 리스트에 있는 여러 함수들 그리고 얕은 복사과 깊은 복사에 대해서 까지 이야기 해보려 합니다.
최대한 간단하고 이해하기 쉽게 작성해 보겠습니다.
그럼 시작해보겠습니다.
<목차>
1. 리스트란?
2. 리스트 덧셈(+), 곱셈(*), 값 변경
3. 리스트 접근 방법 (인덱싱, 값 수정, 슬라이싱)
4. 리스트 항목 삭제와 길이 구하기 (del, len)
5. 리스트의 메서드1 (append, extend, insert, remove, pop)
6. 리스트의 메서드2 (clear, index, count, sort, reverse, copy)
7. 리스트 복사에 대해서 (얕은복사, 깊은복사)
파이썬 리스트 2탄 응용편 [바로가기]
1. 파이썬에서 리스트(list)란?
> 리스트 타입의 설명
리스트는 데이터들을 잘 관리하기 위해서 묶어서 관리할 수 있는 자료형 중의 하나 입니다.
사전에 리스트를 찾아보면 아래와 같이 나오게됩니다.
다수의 품명(品名)이나 인명(人名) 등을 기억하거나 점검하기 쉽도록 특별한 순서로 적어 놓은 것. 순화어는 `목록’, `명단’.
다수의 품명(品名)이나 인명(人名) 등을 기억하거나 점검하기 쉽도록 특별한 순서로 적어 놓은 것. 순화어는 `목록’, `명단’.
우리는 이걸 보고 리스트가 점검하거나 기억하기 쉽도록 특별한 순서로 적어놓은 것. 이라는 것을 알 수 있고, 이걸 프로그래밍 언어 차원에서 본다면 데이터들을 잘 관리할 수 있도록 순서를 정해서 관리하는 데이터 타입의 하나 이다. 라고 생각하면 되겠습니다.
리스트 자료형 혹은 배열을 말할때 항상 교수님들은 이런예제를 사용했었습니다.
아파트에 101호 부터 1201호 까지 하나씩 변수로만들게 되면 아래와 같이 하나하나 변수를 만들어 주어야합니다.
a1 = 101
a2 = 201
a3 = 301
…
a10 = 1001
a11 = 1101
a12 = 1201
이게 지금은 열두개라서 그래도 사람손으로 해도 가능은 하지만, 동 수가 많아지고 호수도 더 많아진다면 100개 1000개 의 변수를 하나하나 일일히 만들수는 없지 않을까요?
그래서 한번에 변수를 묶어서 땡처리 할 수 있게 리스트 자료형이 나오게 된 것 입니다.
101호 부터 1201호 까지 리스트로 나타내면 아래와 같습니다.
a = [101, 201, 301, 401, 501, 601, 701, 801, 901, 1001, 1101, 1201]
어떤가요? 여전히 호수는 일일히 쳐야하지만, 변수가 12개가 생기는게 아니라 리스트 타입의 변수 딱 1개만 만들어서 묶어서 처리할 수 있게 되었죠?
101부터 1201 까지 치는것도 비효율적으로 보인다 싶다면. 그럼 101, 201처럼 규칙이 있는 자료형은 for 반복문이나 while 반복문을 통해서 자료형을 또 넣거나 할 수 있겠죠?
또한, 리스트는 시퀀스 데이터라고 합니다. 시퀀스라는 것은 데이터에 순서가 존재한다는 뜻입니다. 그렇기 때문에 우리는 리스트 안에 있는 데이터를 순서대로 접근이 가능하고, index를 이용해서 리스트[몇번지=index]에 한번에 접근가능하기도 합니다.
> 리스트를 만드는 방법
파이썬에서 리스트는 아래와같은 생김새를 가지고 있습니다.
리스트변수이름 = [요소1, 요소2 …]
이렇게 대괄호 안에 요소들이 순서대로 존재하고 있습니다.
만약 안에 요소를 가지고 있지 않는다 해도 리스트 타입은 맞으며, 요소가 없는 리스트 타입. 즉 비어있는 리스트 인 것 입니다.
파이썬에서 리스트를 만드는 방법은 2가지가 존재합니다.
> 대괄호를 이용하는 방법
a = [1, 2, 3, 4, 5]
b = [‘blockdmask’, 2, 4, ‘blog’]
c = []
이렇게 대괄호를 이용해서 리스트를 만들 수 있으며, 리스트 내부에 값은 스트링이 오든, 숫자가 오든 데이터 타입이 통일되지 않아도 상관없습니다.
또한, c를 보면 아무것도 넣지 않은 [] 대괄호만 있는걸 보실수 있는데, 이것은 위에서 말했듯, 요소가 없는 비어있는 리스트를 말합니다.
> list()를 이용한 방법
d = list()
이렇게 list()를 이용해서 리스트를 만들수 있습니다. 하지만, 이것은 비어있는 리스트만 뜻하게 됩니다.
2. 파이썬 리스트의 덧셈, 곱셈, 값 변경에 대해서
> 덧셈 – 리스트를 붙인다.
덧셈 연산자 + 를 이용해서 리스트끼리 덧셈을 할 수 있습니다.
덧셈을 하게되면 리스트가 연결이 되고, 그 연결된 하나의 리스트가 생성됩니다.
1 2 3 4 5 # 리스트 덧셈 a = [ “BlockDMask” , 333 ] b = [ 1 , 2 , 3 ] print (a + b) cs
이렇게 리스트 a [‘BlockDMask’, 333] 와 리스트 b [1,2,3]을 더하면 하나의 또다른 리스트인 [‘BlockDMask’, 333, 1, 2, 3]이 생성되는 것을 알 수 있습니다.
리스트 덧셈은 리스트 이어 붙이기 입니다.
아래 설명할 리스트의 extend 함수와는 다릅니다.
> 곱셈 – 리스트를 반복한다
곱셈 연산자 * 를 이용해서 리스트를 곱할 수 있습니다.
n을 곱하게 되면 n 번만큼 리스트를 반복해서 만들어 줍니다.
2번 곱하면 리스트가 2번 반복이 되고, 0을 곱하게 되면 빈 리스트가 됩니다.
1 2 3 4 5 6 7 8 9 # 리스트 a = [ 1 , 2 , 3 ] b = a * 3 print (b) c = a * 0 print (c) cs
이렇게 리스트를 n번 곱하게 되면 n번 만큼 리스트를 앞에서 부터 뒤까지 반복해서 새로운 리스트를 만들어 줍니다.
0을 곱하게 되면 빈 리스트가 생성 됩니다.
3. 파이썬 리스트의 인덱싱과 슬라이싱에 대해서
> 리스트 인덱싱1 : 리스트 검색, 접근
파이썬의 리스트는 시퀀스 데이터 타입이기 때문에 인덱스를 이용해서 접근을 할 수 있습니다.
즉, 각 요소 마다 자리표가 있어서 우리는 리스트 a에 1번 손님 앞으로 나오세요~
이게 가능하다는 그말 입니다. 그걸 코드로 한번 볼까요?
앗 그리고 리스트의 자리표(index)는 0번부터 시작하게 됩니다.
그럼 index 1번 손님은 두번 째 손님이겠죠?
간단하게 예제를 보면
리스트 a = [‘b’, ‘l’, ‘o’, ‘c’, 10, 11] 라 하면
a[0]는 ‘b’를 가리키고
a[1]은 ‘l’을 가리킵니다.
…
a[5]는 11 을 가리킵니다.
a[6]은 에러가 납니다. 없는 값을 가리키려고 하기 때문이죠.
그래서 인덱스는 “리스트의 길이 -1″ 까지가 끝 입니다.
아 그리고!
파이썬에서는 신기하게도 리스트에서 마이너스 인덱스를 통해서 끝에서 부터 접근이 가능합니다. 그게 무슨 뜻인지는 예제로 한번 확인해 볼까요?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # 리스트 인덱싱 # 길이가 8인 리스트 a = [ 101 , 102 , ‘b’ , ‘l’ , ‘o’ , 103 , 104 , 105 ] # 인자 접근 print (f ‘a[0] : ‘ ) print (f ‘a[1] : ‘ ) print (f ‘a[2] : ‘ ) # … print (f ‘a[7] : ‘ ) # print(f’a[8] : ‘) – error # 그럼 마이너스로 접근이 가능할까요? print (f ‘a[-1] : ‘ ) print (f ‘a[-2] : ‘ ) # … print (f ‘a[-8] : ‘ ) # print(f’a[-9] : ‘) – error Colored by Color Scripter cs
결과 값을 보면 길이가 8인 리스트에서 접근 할 수 있는 인덱스는
양수 : 왼쪽에서 오른쪽 방향은 0부터 7까지 접근이 가능하고
음수 : 오른쪽 에서 왼쪽 방향은 -1 부터 -8 까지 접근이 가능합니다.
음수를 통해서 뒤에서 부터 접근이 가능한것은 매우 신기하고 유용할것 같네요.
그럼 정리를 해보면
길이가 N인 리스트를 인덱스 할 수 있는 범위는
양수 0 ~ N-1 까지
음수 -N ~ -1 까지
결론적으로 -N 부터 N-1 구간 까지 접근이 가능합니다.
> 리스트 인덱싱2 : 리스트 값 수정
우리는 위에서 배운 인덱싱을 가지고 리스트의 특정 요소의 값을 수정할 수 있습니다.
리스트의 맨 첫번째 인자를 10으로 변경하고 싶다고 하면 인덱싱을 이용해서 해당 값에 접근을 하고 그 값에 = 을 이용해서 원하는 값(=10)으로 넣어줍니다.
a[0] = 10
정리해보면 이런식으로 가능하겠죠?
리스트[N] = 값
예제로 한번 보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # 리스트 값 수정 b = [ 222 , 333 , 444 , 555 ] print (f ‘b :
‘ ) b[ 0 ] = 10 print (f ‘b[0] = 10’ ) print (f ‘b :
‘ ) b[ – 2 ] = ‘BlockDMask’ print (f ‘b[-2] = \’BlockDMask\” ) print (f ‘b :
‘ ) b[ 3 ] = 1000 print (f ‘b[3] = 1000’ ) print (f ‘b : ‘ ) Colored by Color Scripter cs
이렇게 인덱스를 이용해서 리스트의 값을 변경할 수 있습니다. 간단하죠?
> 리스트 슬라이싱 : 리스트 자르기
리스트 슬라이싱이라는것은 리스트를 잘라버린다는것 입니다. 리스트를 다루다 보면 필요한 부분만 잘라서 쓰고 싶고, 필요없는 부분은 잘라 내야하는 경우가 있습니다.
파이썬에서는 슬라이싱을 [] 대괄호에서 콜론 : 을 이용해서 진행을 합니다.
: 콜론은 ~에서 ~까지를 나타내는 것을 말합니다.
리스트 a = [100, 101, 102, 103, 104] 라는것이 존재하고, 우리는 101번부터 103번까지의 값만 필요하다고 했을때.
위에서 리스트 인덱싱에서 배운걸 보면 a[1]는 101을 가리키고 a[3]는 103 값을 가리킬 것 입니다.
그럼 슬라이싱을 이용해서 이렇게 표현할 수 있습니다.
a[1:4]
이렇게 표현을 하면 “리스트 a에서 index 1번부터 3번까지를 잘라서 리스트로 반환해라”. 하는 명령이 됩니다. 중요한건 반환값도 리스트 라는것입니다.
어 근데 a[1:3]이 아니라 a[1:4]네요? 그럼 a[1]부터 ~ a[3] 까지 자른다는 것을 a[1:4] 까지로 표현을 하는걸 보면 뒤에있는 :4는 포함하지 않는 구간이라는 거네요.
4-1 index 까지만 가지고 온다는 거군요.
정리를 해보면
리스트[원하는 시작 index : 원하는 끝 index + 1] 를 하면
해당 리스트의 원하는 부분을 잘라서 리스트로 반환해주는것을 리스트 슬라이싱 이라고 합니다.
그럼 슬라이싱 중에 [:], [:M], [M:] 이렇게 앞뒤를 생략한것들은 무슨 뜻인지 예제에서 확인해보겠습니다.
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 # 리스트 # 길이가 8인 리스트 a = [ 101 , 102 , ‘b’ , ‘l’ , ‘o’ , 103 , 104 , 105 ] # a[1] 부터 ~ a[2] 까지 슬라이싱 print (f ‘a[1:3] : ‘ ) # a[1] 부터 ~ a[6] 까지 슬라이싱 print (f ‘a[1:7] : ‘ ) # a[1] 부터 ~ a[7] 까지 슬라이싱 (리스트 끝 까지1) print (f ‘a[1:8] : ‘ ) # a[1] 부터 리스트 끝까지 슬라이싱 (리스트 끝 까지2) print (f ‘a[1:] : ‘ ) # 리스트 맨 앞에서 부터 맨 뒤 끝 까지 print (f ‘a[:] : ‘ ) # 리스트 맨 앞에서 특정 부분 까지 print (f ‘a[:3] :
‘ ) # 리스트 반으로 뚝딱 나누기 1 print (f ‘a[:4] : ‘ ) print (f ‘a[4:] : ‘ ) # 리스트 반으로 나누기 2 # 리스트 길이를 가지고 오는 len 내장함수 이용 w = int ( len (a) / 2 ) print (f ‘a[:w] : ‘ ) print (f ‘a[w:] :
‘ ) # 마이너스는 통할까? print (f ‘a[-2:] : ‘ ) print (f ‘a[-1:] : ‘ ) print (f ‘a[-5:-1] : ‘ ) print (f ‘a[:-5] : ‘ ) Colored by Color Scripter cs
결과 확인
a = [101, 102, ‘b’, ‘l’, ‘o’, 103, 104, 105]
결과를 보시면
1. 슬라이싱은 리스트 a의 a[N:M] 이라고 한다면 아래의 식을 만족합니다.
a[N] <= x < a[M] a[N] <= x <= a[M-1] N을 포함한 인덱스 부터 M을 포함하지 않는 인덱스 까지를 자르는 기능을 합니다. 2. 슬라이싱을 할때 맨 앞을 비워둔다면 a[:M] 이렇게 표현할 수 있으며 이는 아래의 식을 말합니다. a[0] <= x < a[M] a[0] <= x <= a[M-1] 3. 뒤를 비워두는 a[N:] 이런 식이라면 a[N] <= x < a[len(a)] a[N] <= x <= a[len(a) - 1] len(a)는 리스트의 길이를 말합니다. 4. a[:] 이처럼 양쪽을 비워서 슬라이싱을 한다는 것은 리스트 전체를 복사하는것과 동일합니다. a[0] <= x < a[len(a)] a[0] <= x <= a[len(a) - 1] 5. 예제 마지막을 보시면 음수 index도 슬라이싱을 할 수 있다는걸 볼 수 있습니다. 4. 파이썬 리스트의 길이, 삭제에 대해서 > len 함수 – 리스트의 길이를 구하는 함수
내장함수 len을 이용해서 리스트의 길이를 구할 수 있습니다.
len(리스트) 이면 리스트의 길이를 반환해줍니다.
1 2 3 4 5 6 # 리스트 길이 구하기 c = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] print (f “c : ” ) print (f “len(c) : ” ) cs
결과값.
> del 함수 – 리스트의 특정 요소 혹은 리스트 특정 범위를 삭제
del(리스트 범위 or 리스트 특정 요소)
리스트 슬라이싱을 이용해서 리스트에서 특정 범위 만큼을 삭제할 수 있습니다.
리스트 인덱싱을 이용해서 리스트에서 특정 요소를 삭제 할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 리스트 삭제, 특정 위치 삭제, 특정 범위 삭제 c = [ 100 , 200 , 300 , 400 , 500 , 600 , 700 ] print (f “c : ” ) # 특정 위치 삭제 del (c[ 1 ]) print (f “del(c[1])” ) print (f “c :
” ) # 범위 삭제 del (c[ 1 : 4 ]) print (f “del(c[1:4])” ) print (f “c :
” ) Colored by Color Scripter cs
결과를 보시면 del() 함수를 이용해서 리스트의 특정 범위를 삭제하거나, 특정 값을 삭제 할 수 있음을 확인 할 수 있습니다.
c = [100, 200, 300, 400, 500, 600, 700] 인 리스트에서
del(c[1]) 을 하게 되니 1번째 인덱스인 200이 삭제되고
c는 [100, 300, 400, 500, 600, 700] 만 남게 되는것을 볼 수 있습니다.
이 상태에서 del(c[1:4]) 를 하게 되니 1~3 인덱스인 300, 400, 500 값이 삭제되어
c는 [100, 600, 700] 이 되는걸 볼 수 있습니다.
** len 함수와 del 함수는 리스트 전용으로만 딱 쓸수있는 함수가 아니라, 다른 객체에도 사용할 수 있는 파이썬 내장 함수 입니다.
5. 리스트 메서드 append, insert, remove, pop, extend
list.append(x) – 리스트에 값 추가
리스트의 append 함수를 이용해서 리스트의 끝에 값 x를 추가하는 함수 입니다.
1 2 3 4 5 6 7 8 9 a = [ 2 , 9 , 4 ] print (a) a.append( ‘k’ ) print (a) a.append( 100 ) print (a) cs
결과를 보면 append 함수를 호출하여 특정 값을 추가할 때 마다 리스트의 맨 뒤에 값이 추가 되는것을 확인할 수 있습니다.
list.insert(a, b) – 특정 위치에 값 추가
리스트의 a위치에 b 값을 추가하는 함수 입니다.
a는 index 를 말합니다.
1 2 3 4 5 6 7 8 9 c = [ 22 , 44 , 66 , 88 ] print (c) c.insert( 0 , ‘k’ ) print (c) c.insert( 3 , ‘m’ ) print (c) cs
c.insert(0, ‘k’) 를 보면 index가 0인 위치에 ‘k’ 값이 들어가 있고, 나머지 리스트는 뒤로 밀린것을 볼 수 있습니다.
list.remove(x) – 리스트에서 특정 값 제거
리스트에서 특정 값 x를 찾아서 제거하는 함수입니다.
해당 값 x가 여러개 있다면? x가 없다면? 어떻게 될까요?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 c = [ 22 , 44 , 66 , 88 , 44 , 11 , 44 ] print (f ‘c : ‘ ) # remove() 값이 하나일때 c.remove( 66 ) print (f ‘c.remove(66) : ‘ ) # remove() 값이 두개 이상일때 c.remove( 44 ) print (f ‘c.remove(44) : ‘ ) # remove() 값이 없을때 (error) c.remove( 1000 ) print (f ‘c.remove(1000) : ‘ ) Colored by Color Scripter cs
결과를 보셨듯
remove(x)에 x 값이 리스트에 존재하면 x 값을 지워줍니다.
x가 리스트에 여러개 있다 해도, 맨 처음 x를 지워 줍니다.
x가 리스트에 존재하지 않는다면 에러가 발생합니다.
list.pop() – 리스트 맨 마지막 값 반환 후 삭제
리스트에 있는 맨 마지막 값을 반환한 후에 리스트에서 해당 값을 삭제하는 함수 입니다.
맨 마지막 값을 제거 하기 위한 용도로만 사용하셔도 되고,
맨 마지막 값을 읽어오고 제거 하기 위한 용도로 사용 할 수 도 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 a = [ 9 , 8 , 7 , 6 , 5 ] print (f ‘a :
‘ ) b = a.pop() print (f ‘a.pop()의 반환 : ‘ ) print (f ‘a :
‘ ) c = a.pop() print (f ‘a.pop()의 반환 : ‘ ) print (f ‘a :
‘ ) d = a.pop() print (f ‘a.pop()의 반환 : ‘ ) print (f ‘a :
‘ ) cs
a.pop()이 불릴때 마다 리스트 맨 뒤에 있는 값이 사라지고, 해당 값은 a.pop의 반환값으로 되는것을 확인할 수 있습니다.
list.extend(list2) – 리스트에 다른 리스트2 연결
리스트1에 리스트2를 붙이고 싶을때 사용하는 함수 입니다.
extend( 매개변수 ) 함수의 매개변수에는 무조건 리스트가 와야합니다.
1 2 3 4 5 6 7 8 9 10 11 12 a = [ 6 , 5 ] b = [ 3 , 2 , 1 ] c = [ ‘blockdmask’ , ‘blog’ ] print (a) a.extend(b) print (a) a.extend(c) print (a) cs
list1.extend(list2)
매개변수로 들어온 list2가 list1의 뒤에 붙여진것을 확인할 수 있습니다.
list1 리스트는 길이가 길어지게 되고, 따로 출력하진 않았지만 list2는 그대로 입니다.
이렇게 extend를 이용해서 리스트를 붙일 수 있습니다.
리스트 + 연산자와 extend의 다른점은
list1 + list2 는 리스트 두개의 리스트를 연결해서 새로운 list3을 반환하는 것이고 그렇기 때문에 list3 = list1 + list2 이런식으로 해야 이어진 리스트를 받을 수 있습니다.
하지만
list1.extend(list2)는 list1 리스트 객체에다가 list2를 붙이고, list1 객체를 그대로 사용할 수 있다는 점이 다릅니다.
6. 파이썬 메서드 copy, reverse, sort, count, index, clear
list.copy() – 리스트 복사
리스트를 복사할 수 있는 함수 입니다. 복사한 리스트를 반환하는 함수 입니다.
1 2 3 4 5 6 7 8 a = [ 100 , 200 , 300 ] b = a.copy() print (a) print (b) print (id(a)) print (id(b)) cs
잘 복사 되었고, 주소값이 다른걸 보면 깊은 복사로 인해서 아예 다른 리스트가 생긴것을 볼 수 있습니다.
list.reverse() – 리스트 뒤집기
리스트의 내부 요소들을 싹 뒤집습니다.
뒤집은 리스트를 반환하는 것이 아니라. 현재 리스트를 뒤집습니다.
1 2 3 4 5 a = [ 100 , 200 , 300 ] a.reverse() print (a) cs
reverse 함수로 인해서 리스트 a의 내부 요소들이 다 뒤집힌 것을 볼 수 있습니다.
list.sort() – 리스트 정렬
리스트의 내부 요소를 정렬해주는 함수입니다.
기본적으로는 오름차순으로 정렬이 됩니다.
(작은것 이 앞으로 오고, 큰 값들이 뒤로 가는 정렬방식)
sort 함수에서 주의해야할 것은 내부 요소의 데이터 타입이 같아야합니다.
즉, 비교가 가능한 요소들만 있어야지 sort 함수가 작동할 수 있습니다.
간단히 이야기해서 [“blockdmask”, 1, 2, 3, ‘a’] 이런 리스트는 내부에 문자열도 있고 정수도 있고 데이터 타입이 통일되지 않아서 비교가 불가능 하기 때문에 정렬이 불가능 한 것 입니다.
비교 불가능 => 정렬 불가능
그럼 이제 예제로 한번 살펴볼까요?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # 정렬 가능! a = [ 300 , 200 , 800 , 400 , 500 , 100 ] a.sort() print (a) # 정렬 가능! b = [ ‘c’ , ‘fff’ , ‘t’ , ‘k’ , ‘a’ ] b.sort() print (b) # 정렬 불가능! c = [ ‘a’ , 100 , 1 , 5 , ‘c’ , ‘b’ , ‘l’ , ‘o’ ] c.sort() print (c) Colored by Color Scripter cs
결과값으로 보셨듯,
리스트 내부에 자료형이 int 타입으로 통일된 a 리스트와 리스트 내부의 자료형이 string 타입으로 통일된 b 리스트는 문제 없이 sort() 된 것을 확인할 수 있습니다.
그렇지만 int, string 타입이 섞여있는 c 리스트는 에러가 난 것을 볼 수 있습니다.
에러 문구를 잘 보면 int 타입과 str 타입은 “<" 비교를 할 수 없다. 그러므로 sort() 함수를 쓸 수 없다. 입니다. list.count(x) - 리스트 값 x 의 개수 세기 리스트 내부에 매개변수로 전달받은 x와 같은게 몇개가 있는지 세서 그 개수를 반환하는 함수 입니다. 리스트 내부에 x와 같은 값의 개수 반환. 1 2 3 4 5 6 7 8 9 10 a = [ 'b' , 'l' , 'o' , 'c' , 'k' , 'd' , 'm' , 'a' , 's' , 'k' ] print (f "a = " ) # 리스트에서 'k' 개수 찾기 print (f "a.count('k') : " ) # 리스트에는 없는 'z' 개수 찾기 print (f "a.count('z') : " ) Colored by Color Scripter cs list.count(x) 함수에 인자로 찾고 싶은 것을 넣으면 개수를 잘 반환해주는걸 볼 수 있습니다. list.index(x) - 리스트 값 x의 위치(index) 값 반환 리스트 내부에 값 x의 위치를 index 로 반환하는 것 입니다. x가 여러개있다면 맨 처음에 나온 x의 index를 반환하게 됩니다. x가 리스트 내부에 없다면 어떤 값을 반환할까요? 1 2 3 4 5 6 7 8 9 10 11 12 a = [ 'b' , 'l' , 'o' , 'c' , 'k' , 'd' , 'm' , 'a' , 's' , 'k' ] print (f "a = " ) # 리스트에서 'k' 위치 찾기 (하나인 경우) print (f "a.index('d') : " ) # 리스트에서 'k' 위치 찾기 (여러개인 경우) print (f "a.index('k') : " ) # 리스트에서 'z' 위치 찾기 (없는 경우) print (f "a.index('z') : " ) Colored by Color Scripter cs 결과 값을 보셨듯 list.index(x) 함수는 찾고자 하는 x 값의 위치의 index 값을 반환합니다. 한 개가 있다면 당연하게도 그 위치를 반환하겠죠. 여러개가 있다 해도 맨 처음 찾은 x의 위치를 반환하게 됩니다. 그렇지만 만약에 리스트 내부에 찾고자 하는 x가 없는 경우 에러가 발생하게 됩니다. list.clear() - 리스트에 저장된 모든 값 삭제 리스트 내부에 존재하는 모든 값들을 삭제 합니다. 리스트 자체를 삭제하는게 아니라 내부 값들만 삭제하기 때문에 리스트 객체 자체는 남아있고, 내부 값이 없는. 비어있는 리스트가 됩니다. 1 2 3 4 5 6 a = [ 'blockdmask' , 1 , 2 , 3 ] print (a) a.clear() print (a) cs 이렇게 clear() 함수를 이용하면 리스트 내부에 있는 모든 값들을 삭제하여, 빈 리스트가 됩니다. 7. 파이썬 리스트 깊은 복사과 얕은 복사에 대해서 깊은 복사는 말 그대로 복사를 해서 각각 독립적인 리스트가 되는것이고 얕은 복사는 복사는 했지만 얕게 해서 겉에만 복사된 느낌이고 실제로는 같은 리스트를 가리키고 있는것을 말합니다. 리스트 a가 있었고 a를 복사한 리스트 b가 있다고 했을때 b의 값을 변경했을때 a가 바뀐다 -> 얕은복사
a가 안바뀐다 -> 깊은복사
이것입니다.
좀더 깊게 이야기하면
얕은 복사를 하면 복사가 아닌 참조가 되어서, 같은 주소를 가리키는 변수가 하나 생긴것 뿐입니다.
깊은 복사는 새롭게 리스트를 복사하여 주소값이 아예 다른 별개의 변수가 생긴 것입니다.
예제에서 한번 확인해 볼까요?
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 # 리스트 얕은 복사, 깊은 복사 # 얕은 복사 (이어져있음) a = [ 100 , 200 , 300 , 400 , 500 , 600 , 700 ] b = a print (f “1. 얕은 복사” ) print (f “b = a” ) print (f “id(a) = ” ) print (f “id(b) =
” ) b[ 2 ] = “BlockDMask” print ( ‘b[2] = “BlockDMask”‘ ) print (f “a = ” ) print (f “b =
” ) # 깊은 복사 (독립) c = [ 100 , 200 , 300 , 400 ] d = c.copy() e = c[:] print (f “2. 깊은 복사” ) print (f “d = c.copy()” ) print (f “e = c[:]” ) print (f “id(c) = ” ) print (f “id(d) = ” ) print (f “id(e) =
” ) d[ 1 ] = “Blog” e[ 3 ] = 1212 print ( ‘d[1] = “Blog”‘ ) print ( ‘e[3] = 1212’ ) print (f “c = ” ) print (f “d = ” ) print (f “e =
” ) Colored by Color Scripter cs
결과 값 확인
얕은 복사는 = 대입으로 진행을 하고
깊은 복사는 copy 함수나 [:] 슬라이싱을 이용해서 진행하는것을 확인할 수 있습니다.
얕은 복사를 진행한 리스트 a, b는 주소값이 동일한것을 볼 수 있으며, 그렇기 때문에 리스트 b의 값을 변경했을때 리스트 a의 값도 변경된 것을 볼 수 있습니다.
깊은 복사를 진행한 리스트 c, d, e는 각각 주소값이 다른것을 볼 수 있습니다.
그렇기 때문에 리스트 d, e 의 값을 각각 변경해도 다른 리스트에는 영향이 없는 것을 볼 수 있습니다.
저는 얕은 복사 깊은 복사가 반대로 외워져서 이런방식으로 생각하고 있습니다.
얕은 복사는 얕게 헤어져서 계속 질척거리게 이어진 느낌.
깊은 복사는 깊게 사귀다가 아예 헤어져서 남남이 된 느낌.
아마 저만 이렇게 외울것 같습니다. 하하.
이번 포스팅은 매우매우 길었네요. 간만에 길어서 오래 걸렸습니다. 2장으로 나누지 않고 진행 하려 했는데, 어쩔수 없이 나누어 졌습니다.
이번 포스팅에서는 파이썬 기본에서 이정도의 리스트 정보, 사용법은 딱 알고 넘어가시면 좋을것 같습니다. 감사합니다. 힘들게 작성한 만큼 글을 읽은 분들께 도움이 되었으면 좋겠습니다.
파이썬 코딩 도장: 10.1 리스트 만들기
Unit 10. 리스트와 튜플 사용하기
지금까지 변수에는 값을 한 개씩만 저장했습니다.
a = 10 b = 20
그럼 값을 30개 저장하려면 어떻게 해야 할까요? 다음과 같이 변수 30개에 값 30개를 저장하면 됩니다.
a1 = 10 a2 = 20 # … (생략) a29 = 60 a30 = 40
변수 30개를 일일이 타이핑하기는 쉽지 않습니다. 만약 저장할 값이 3,000개라면 정말 끔찍하죠? 이때는 리스트를 사용하면 편리합니다. 리스트는 말 그대로 목록이라는 뜻이며 값을 일렬로 늘어놓은 형태입니다(보통 리스트의 값은 코드로 생성하는 경우가 많아서 타이핑할 일이 거의 없습니다).
이번 유닛부터 리스트를 만드는 방법과 기본 사용 방법을 알아보겠습니다.
10.1 리스트 만들기
변수에 값을 저장할 때 [ ](대괄호)로 묶어주면 리스트가 되며 각 값은 ,(콤마)로 구분해줍니다.
리스트 = [값, 값, 값]
그럼 숫자가 5개 들어있는 리스트를 만들어보겠습니다.
>>> a = [ 38 , 21 , 53 , 62 , 19 ] >>> a [ 38 , 21 , 53 , 62 , 19 ]
a = [38, 21, 53, 62, 19]와 같이 변수에 [ ]로 값을 저장하여 리스트를 만들었습니다. 특히 리스트에 저장된 각 값 요소(element)라고 부릅니다. 이 단어를 잘 기억해두세요.
10.1.1 리스트에 여러 가지 자료형 저장하기
리스트는 문자열, 정수, 실수, 불 등 모든 자료형을 저장할 수 있으며 자료형을 섞어서 저장해도 됩니다(불 자료형은 ‘Unit 8 불과 비교, 논리 연산자 알아보기’에서 설명하겠습니다).
>>> person = [ ‘james’ , 17 , 175.3 , True ] >>> person [ ‘james’ , 17 , 175.3 , True ]
이처럼 리스트에 여러 가지 자료형을 사용하면 관련 정보를 하나로 묶기 좋습니다.
에러 SyntaxError: invalid syntax: [ ]의 짝이 맞지 않거나 각 값을 구분할 때 ,를 넣지 않아서 발생하는 구문 에러입니다. [ ]의 짝이 맞는지, ,를 빠뜨리지 않았는지 확인해주세요.
10.1.2 빈 리스트 만들기
빈 리스트를 만들 때는 [ ]만 지정하거나 list를 사용하면 됩니다.
리스트 = []
리스트 = list()
>>> a = [] >>> a [] >>> b = list () >>> b []
빈 리스트는 쓸모가 없을 것 같지만, 보통 빈 리스트를 만들어 놓은 뒤에 새 값을 추가하는 방식으로 사용합니다. 리스트에 값을 추가하는 방법은 ‘Unit 22 리스트와 튜플 응용하기’에서 자세히 설명하겠습니다.
10.1.3 range를 사용하여 리스트 만들기
이번에는 range를 사용하여 리스트를 만들어보겠습니다. range는 연속된 숫자를 생성하는데 range에 10을 지정하면 0부터 9까지 숫자를 생성합니다. 즉, 지정한 횟수 숫자는 생성되는 숫자에 포함되지 않습니다.
range( 횟수)
>>> range ( 10 ) range ( 0 , 10 )
range(0, 10)이라고 나와서 10까지 생성될 것 같지만 10은 포함되지 않습니다. 다음과 같이 list에 range(10)을 넣어보면 0부터 9까지 들어있는 리스트가 생성됩니다.
리스트 = list(range(횟수))
>>> a = list ( range ( 10 )) >>> a [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
range는 시작하는 숫자와 끝나는 숫자를 지정할 수도 있습니다. 이때도 끝나는 숫자는 생성되는 숫자에 포함되지 않습니다. 즉, list에 range(5, 12)를 넣으면 5부터 11까지 들어있는 리스트가 생성됩니다.
리스트 = list(range(시작, 끝))
>>> b = list ( range ( 5 , 12 )) >>> b [ 5 , 6 , 7 , 8 , 9 , 10 , 11 ]
이번에는 증가폭을 사용하는 방법입니다. range에 증가폭을 지정하면 해당 값만큼 증가하면서 숫자를 생성합니다.
리스트 = list(range(시작, 끝, 증가폭))
>>> c = list ( range ( – 4 , 10 , 2 )) >>> c [ – 4 , – 2 , 0 , 2 , 4 , 6 , 8 ]
range(-4, 10, 2)는 -4부터 8까지 2씩 증가합니다. 여기서 끝나는 값은 10이므로 10까지 증가하지 않고 8까지 생성됩니다.
만약 증가폭을 음수로 지정하면 해당 값만큼 숫자가 감소합니다.
>>> d = list ( range ( 10 , 0 , – 1 )) >>> d [ 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ]
range(10, 0, -1)은 10부터 1씩 감소하며 0은 포함되지 않으므로 1까지 생성됩니다.
07. 파이썬 리스트(List) 자료형
파이썬의 기초인 자료형은 내용이 많습니다.
단순하고 지루할 수도 있지만 가장 중요한 기초이기에
반복하면서 익숙해지면 좋겠습니다.
지금까지 배운 숫자형과 문자열 자료형은
여러 가지 목록의 자료를 입력하기엔 불편합니다.
예를 들면, A 기업의 6개월간의 매출을 분석하려면
숫자형으로는 표현하는 데 한계가 있습니다.
실제 파이썬에서 자료형으로 많이 쓰이는
‘리스트 / 튜플 / 딕셔너리 / 집합’ 4가지 중
첫 번째로 리스트(List)를 알아보겠습니다.
실제로 리스트를 가장 많이 사용합니다!
이번 장에서는
인덱싱과 슬라이싱을 많이 사용하게 될 텐데요~
까먹으셨다면 링크를 통해 복습하세요!
파이썬 자료형의 종류
1. 숫자형
2. 문자열 자료형
3. 리스트 자료형 ◀(이번 장에서 배울 내용)
4. 튜플 자료형
5. 딕셔너리 자료형
6. 집합 자료형
7. 불 자료형
리스트 자료형을 시작하면서부터
이해가 어려웠던 이유는
일반적으로 사용하는 OA(엑셀 등) 프로그램에서는
볼 수 없는 형태이기 때문입니다.
리스트 / 튜플 / 딕셔너리 / 집합
위 4가지 자료 형태는 파이썬에서
주로 사용하는 자료구조란 것만 이해하시고
실습을 하면서 익히시는 것을 추천드립니다.
파이썬에서 주로 사용되는 헷갈리는 자료형을
간단하게 비교하였습니다.
각 자료형을 모두 공부하신 후에 아래 표를
보시면 이해하는 데 도움이 되실 겁니다~
파이썬 자료형 비교(리스트 List / 튜플 Tuple / 딕셔너리 Dic / 집합 Set)
■ 리스트 (List)
□ 여러 자료들을 목록 형태로 관리하는 자료구조
(순서가 있음, 수정할 수 있음)
리스트명 = [요소1, 요소2, 요소3, … ]
리스트(List)의 여러 가지 사용방법입니다.
a = [] #값이 없는 리스트 print(a) b = [1,2,3] #숫자가 입력된 리스트 print(b) c = [“To”, “do”, “List”] #문자가 입력된 리스트 print(c) d = [“To”, “do”, “List”, 10, 20] #문자+숫자 같이 입력된 리스트 print(d) e = [1,2,[‘P’,3]] #리스트 안에 입력된 리스트 print(e) ##### result ##### [] [1, 2, 3] [‘To’, ‘do’, ‘List’] [‘To’, ‘do’, ‘List’, 10, 20] [1, 2, [‘P’, 3]]
인덱싱과 슬라이싱은 리스트(List)에서도 사용됩니다.
그리고 리스트에서도 동일하게 0부터 순서를 셉니다.
1) 숫자가 입력된 리스트를 인덱싱하기
odd = [1,3,5,7,9] print(odd) #odd란 변수의 리스트 요소 모두 출력 print(odd[1]) #odd란 변수의 리스트 요소 중 순서가 1인 ‘3’ 을 출력 ##### result ##### [1, 3, 5, 7, 9] 3
2) 리스트를 인덱싱/슬라이싱하기
c=[‘life’,’is’,’too’,’short.’] print(c) print(c[1]) #인덱싱 사용하여 1순서 출력 print(c[0:4]) #슬라이싱 사용하여 0순서부터 3순서 까지 출력 ##### result ##### [‘life’, ‘is’, ‘too’, ‘short.’] is [‘life’, ‘is’, ‘too’, ‘short.’]
list =[1,2,3,4] print(list[-1]) #맨 끝 순서부터 -1로 시작 print(list[0:3]) #0번째 부터 3번째 까지 출력(단, 3번째는 생략) print(list[1:]) #1번째부터 끝까지 출력 print(list[:3]) #처음부터 3번째 까지 출력(단, 3번째는 생략) print(list) #list 라는 변수 전체 출력 ##### result ##### 4 [1, 2, 3] [2, 3, 4] [1, 2, 3] [1, 2, 3, 4]
3) 리스트 내에 있는 리스트 출력하기
g=[‘life’,’is’] f=[1,2,g] print(f[2][0]) #’f’의 2번째는 ‘g’의 0번째 요소 출력 ##### result ##### life
g=[‘List’,’is’] k=[‘Lee’,’ST’] f=[1,k,g] print(f[1][1]) print(f[1][0]+k[1]) print(f[-2][1]) print(f[2][0]) ##### result ##### ST LeeST ST List
4) 3중 리스트 출력 및 요소 수정하기
l=[1,2,[‘a’,’b’,[‘123′,’python’]]] print(l[2]) #’l’ 리스트 값의 2번째 요소 print(l[2][2][1]) #’l’ 리스트 값의 2번째에 2번째에 1번째 요소 출력 l[2][2][0]=’777′ #리스트는 값 변경이 가능하다. print(l) l1= [1,2,3] l1[1]=[‘a’,’b’,’c’] #l1이라는 리스트 값의 1순서 요소 수정 print(l1) ##### result ##### [‘a’, ‘b’, [‘123’, ‘python’]] python [1, 2, [‘a’, ‘b’, [‘777’, ‘python’]]] [1, [‘a’, ‘b’, ‘c’], 3]
5) 리스트 연산하기
l1= [1,2,3] #리스트 연산 (반복하기 * ) print(l1*3) c = l1+[4] #리스트 연산 (더하기 + ) print(c) ##### result ##### [1, 2, 3, 1, 2, 3, 1, 2, 3] [1, 2, 3, 4]
6) 리스트 값 변경하기
l2 = [1,2,3,4,5] print(l2) print(l2[1:4]) l2[1:4] = [6,7,8] # ⑴슬라이싱으로 값을 변경 할 수 있음 print(l2) l2[1:2] = [6,7,8] # ⑵크기가 다르면 값 추가 됨 print(l2) l2[1] = [6,7,8] # ⑶인덱싱으로 값을 변경하면 리스트 자체가 추가됨 print(l2) l2[1]=2 # ⑷인덱싱으로 값만 변경하려면 대괄호 빼고 추가 print(l2) ##### result ##### [1, 2, 3, 4, 5] [2, 3, 4] [1, 6, 7, 8, 5] # ⑴ [1, 6, 7, 8, 7, 8, 5] # ⑵ [1, [6, 7, 8], 7, 8, 7, 8, 5] # ⑶ [1, 2, 7, 8, 7, 8, 5] # ⑷
■ 리스트 관련 함수
□ 리스트이름 . 함수명령어( )
6장에서 배운 자료형 관련 함수와 사용법이 동일합니다.
문자열 함수와 리스트 함수의 각 사용법을 익혀봅시다.
1) 리스트에 요소 추가(append)
리스트.append(추가할 값)
list1 = [1,2,3] list1.append(4) #추가하는 값은 해당 리스트의 맨 마지막에 입력됨 print(list1) ##### result ##### [1, 2, 3, 4]
2) 리스트 정렬(sort)
리스트. sort()
#리스트 내에 입력된 요소들을 순서대로 정렬 #숫자, 문자(영어,한글) 모두 가능 list2 = [4,2,1,3,5] list2.sort() print(list2) list2.sort(reverse=True) #반대로 정렬 print(list2) list3 = [‘b’,’d’,’a’,’c’] list3.sort() print(list3) list4 = [‘나’,’다’,’가’] list4.sort() print(list4) ##### result ##### [1, 2, 3, 4, 5] [5, 4, 3, 2, 1] [‘a’, ‘b’, ‘c’, ‘d’] [‘가’, ‘나’, ‘다’]
3) 리스트 뒤집기(reverse)
리스트.reverse()
list3 = [4,2,1,3,5] list3.reverse() #입력된 요소 순서 그대로 거꾸로 뒤집는다. print(list3) #sort와 함께 사용하면 오름차순/내림차순이 가능. list4 = [‘b’,’d’,’a’,’c’] list4.reverse() print(list4) ##### result ##### [5, 3, 1, 2, 4] [‘c’, ‘a’, ‘d’, ‘b’]
4) 위치 반환(index)
리스트.index()
list4 = [4,2,1,3,5] #list4 에서 1 의 위치를 호출 print(list4.index(1)) list5 = [‘b’,’d’,’a’,’c’] #list5 에서 b 의 위치를 호출 print(list5.index(‘b’)) ##### result ##### 2 #→ list4[2] 0 #→ list5[0]
5) 리스트에 요소 삽입(insert)
리스트.insert(삽입 할 요소)
list5 = [1,2,3] list5.insert(1,’a’) #list5의 두번째에 ‘a’를 추가 print(list5) list6 = [‘a’,’b’,’c’] list6.insert(3,’d’) #list6의 세번째에 ‘d’를 추가 print(list6) ##### result ##### [1, ‘a’, 2, 3] [‘a’, ‘b’, ‘c’, ‘d’]
6) 리스트 요소 제거(remove)
리스트.remove(삭제 할 요소)
list6 = [‘a’,’b’,’c’,’a’] list6.remove(‘a’) #리스트에서 첫번째로 나오는 ‘a’를 삭제. print(list6) #두번째로 나오는 ‘a’는 안지워 짐. ##### result ##### [‘b’, ‘c’, ‘a’]
7) 리스트 요소 끄집어내기(pop)
리스트. pop()
list7 = [1,2,3,4] print(list7.pop()) #리스트의 마지막 요소를 반환 print(list7) #pop 함수를 수행하면 마지막 요소 반환 후 삭제시킨다. ##### result ##### 4 [1, 2, 3]
8) 리스트에 포함된 요소 x의 개수 세기(count)
리스트.count( 개수 셀 값)
list8 = [‘a’,’b’,’c’,’a’] print(list8.count(‘a’)) print(list8.count(‘b’)) ##### result ##### 2 1
9) 리스트 확장(extend)
리스트.extend(추가 할 리스트)
list9 = [1,2,3] list9.extend([4,5]) #확장 요소로는 리스트 형태만 올 수 있다. print(list9) 육칠 = [6,7] list9.extend(육칠) #리스트 형태로 된 변수는 가능. print(list9) ##### result ##### [1, 2, 3, 4, 5] [1, 2, 3, 4, 5, 6, 7]
REAKWON :: [파이썬] 리스트(List) 자료형과 다양한 활용 방법의 예제
리스트(List) 자료형
파이썬에는 다른 언어와 비슷하게 자료를 배열과 같이 사용하는 방법이 있습니다. 다른 언어와 같이 배열과 비슷한 특징이 있으나 여기서 추가 기능이 많이 추가 되어 있죠. 어떤 것들이 있는지 이 포스팅에서 정리하도록 하겠습니다.
1. 리스트 초기화와 접근(Indexing)
기본 초기화
리스트는 대괄호([ ]) 안에 리스트의 요소들이 저장됩니다. 대괄호하면 뭔가 배열이 생각나지 않으신가요? 대괄호에 저장하고싶은 원소를 쉼표로 구분하여 넣어주면 끝입니다.
intList = [1, 2, 3, 4, 5] strList = [“reakwon”, “tistory”, “com”] print (intList) print (strList)
[1, 2, 3, 4, 5] [‘reakwon’, ’tistory’, ‘com’]원소 접근
만약 리스트의 원소에 접근하여 읽거나 값을 변경하고 싶다고 하면 인덱스를 사용하여 접근할 수 있습니다. 맨 앞 원소는 0번, 맨 뒤의 원소는 리스트의 길이 – 1이 되죠. 인덱스에는 부호 -가 붙을 수 있는데, 이때는 뒤의 인덱스를 의미하지만 -1부터 시작합니다. -1은 맨 마지막 원소의 인덱스입니다. -2는 맨 마지막 2번째 원소를 의미하게 되죠.
intList = [1, 2, 3, 4, 5] strList = [“reakwon”, “tistory”, “com”] print (intList[0], intList[1], intList[-1], intList[-2]) print (strList[0], strList[-1]) #strList 마지막의 원소 값 변경 strList[2] = ‘COM’ print (strList)
1 2 5 4 reakwon com [‘reakwon’, ’tistory’, ‘COM’]
슬라이싱 – i인덱스부터 j인덱스까지 접근 : [i : j ]
그렇다면 만약 전체 원소에 접근하지말고 특정 인덱스(begin)부터 특정 인덱스 -1 (end) 까지 원소에 접근하고 싶다면 콜론(:)을 이용할수 있습니다. 마지막 처음 인덱스를 지정하지 않으면 0번부터 시작, 마지막 인덱스를 지정하지 않는다면 리스트의 끝까지를 의미합니다. 이 같은 법칙에 따라서 [:]은 리스트의 전체를 의미합니다.
intList = [1, 2, 3, 4, 5] strList = [“reakwon”, “tistory”, “com”] print (intList[1:2]) #1번 원소부터 2번 원소 전까지 print (strList[1:]) #1번 원소부터 끝까지 # [1, 2, 3, 4, 5] 의 1번 인덱스부터 3-1=2번 index까지 값을 변경 intList[1:3] = [12, 13] print(intList)
[2] [’tistory’, ‘com’] [1, 12, 13, 4, 5]2. 리스트 원소 삭제
읽기와 변경뿐만 아니라 원소를 아예 리스트에서 삭제하고 싶다면 del 이라는 함수를 사용해서 삭제할 수 있습니다. 마찬가지로 슬라이싱으로 한꺼번에 리스트 원소를 삭제할 수도 있습니다.
intList = [1, 2, 3, 4, 5] strList = [“reakwon”, “tistory”, “com”] del intList[:3] # 3번 인덱스 이전까지 원소 모두 삭제 del strList[2] # 2번 인덱스 원소 삭제 print(intList) print(strList)
[4, 5] [‘reakwon’, ’tistory’]3. 다중 리스트
리스트안에 리스트가 포함이 될 수 있습니다. 다중 리스트에 접근할때는 인덱스를 추가한 리스트만큼 인덱스를 반복하면 됩니다. 만약 아래와 같이 mergedList에 intList에 포함이 된다면 intList에 존재하는 원소에 접근하려할때는 인덱스를 어떻게 지정하면 좋을까요? 모든 것을 포함한 index와 그 다음 리스트가 포함한 원소의 index , … 마지막 리스트의 원소 index 이런식으로 접근할 수 있습니다.
intList = [1, 2, 3, 4, 5] # [0][1][2][3][4] mergedList = [“reakwon”, “tistory”, “com”,intList] # [0] [1] [2] [3] print(mergedList[0], mergedList[1], mergedList[2], mergedList[3][0], mergedList[3][1], mergedList[-1][-1])
reakwon tistory com 1 2 5
4. 리스트의 반복
리스트를 반복하고 싶으면 * 연산자를 사용해서 반복할 횟수를 적어주면 됩니다.
ls = [‘-‘,’=’] repeat = ls * 5 print (repeat)
[‘-‘, ‘=’, ‘-‘, ‘=’, ‘-‘, ‘=’, ‘-‘, ‘=’, ‘-‘, ‘=’]5. 리스트의 내장 함수
리스트는 인덱스 접근, 변경, 삭제가 가능할뿐만 아니라 때에 따라 맞게 사용할 수 있는 함수를 내장하고 있습니다. 여기서 어떤 함수들이 있나 살펴보도록 하겠습니다.
리스트의 길이 – len
리스트의 내장함수는 아닌데, 리스트의 길이를 구하고 싶을때는 len 함수를 사용하여 구할 수 있습니다.
numbers = [5, 2, 3, 5, 6, 7, 1, 1, 1] #9개 원소 print (“numbers 길이 : “, len(numbers))
numbers 길이 : 9
정렬 – sort
리스트는 sort 함수 한번으로 원소를 정렬할 수 있습니다. 이때 주의할 점은 리스트 내의 자료형은 같은 자료형이어야합니다. 정수형, 문자열을 섞어서 사용할 수는 없습니다. 숫자일때 기본 정렬은 오름차순, 문자열일때 정렬은 기본 사전순이 됩니다. 이때 대소문자를 구분하여 대문자가 먼저 나옵니다. 이유는 소문자의 ASCII코드보다 대문자가 더 작은 코드이기 때문이죠.
numbers = [5, 2, 3, 5, 6, 7, 1, 1, 1] strs = [‘apple’, ‘computer’, ‘python’, ‘list’, ‘C++’,’Java’, ‘banana’] numbers.sort() #정수 정렬 strs.sort() #문자열 정렬 print(numbers) print(strs)
[1, 1, 1, 2, 3, 5, 5, 6, 7] [‘C++’, ‘Java’, ‘apple’, ‘banana’, ‘computer’, ‘list’, ‘python’]리스트의 순서를 거꾸로 저장 – reverse
리스트 순서를 거꾸로 만들고 싶다면 reverse를 이용해서 순서를 거꾸로 만들 수 있습니다. 이를 응용해서 위의 정렬된 리스트를 내림차순으로 만들고 싶다면 sort 이후 reverse를 사용하면 되겠죠?
numbers = [5, 2, 3, 5, 6, 7, 1, 1, 1] numbers.sort() #정수 정렬 numbers.reverse() #거꾸로 뒤집은 리스트 print(numbers)
[7, 6, 5, 5, 3, 2, 1, 1, 1]리트스에 포함된 원소의 갯수 – count
혹시 리스트에 우리가 찾는 값이 있는지, 있다면 몇개나 존재하는지 확인하고 싶다고 한다면 count 함수를 사용하면 됩니다.
numbers = [30, 19, 100, 34, 123, 51, 0, 0, -1] strings = [‘java’, ‘python’, ‘programming’, ‘algorithm’, ‘null’, ‘null’] print (‘0은 몇개? :’, numbers.count(0)) print (‘null은 몇개? :’, strings.count(‘null’))
0은 몇개? : 2 null은 몇개? : 2
마지막에 요소 추가 – append
append는 덧붙이기라는 뜻이 있어 보통 파일에 덧붙이기로 열때 옵션으로 ‘a’를 사용하는 것도 파일에 추가 기록하기 위함입니다. 기존의 원소를 삭제하지 않고 마지막에 추가합니다
ls = [‘hello’,’world’] ls.append(‘!!’) ls.append(‘This’) ls.append(‘is’) ls.append(‘python’) print (ls)
[‘hello’, ‘world’, ‘!!’, ‘This’, ‘is’, ‘python’]리스트를 끝에 추가하는 것도 가능합니다.
animals = [‘dog’, ‘cat’, ‘orca’] animals.append([‘monkey’,’elephant’]) print(animals)
[‘dog’, ‘cat’, ‘orca’, [‘monkey’, ‘elephant’]]리스트의 확장 – extend
append에서 끝에 리스트를 추가할 수 있었는데 이를 접근하려면 중첩 인덱싱을 사용해야합니다. 이렇게 말고 아예 원소들 자체를 리스트에 포함시키고 싶을때는 extend를 활용하여 달성할 수가 있습니다. extend는 반드시 리스트 자료형을 전달받습니다.
animals = [‘dog’, ‘cat’, ‘orca’] animals.extend([‘monkey’,’elephant’]) print(animals)
print(animals)
중간에 요소 삽입 – insert
마지막이 아니라 중간 어느 지점에 원소를 추가하려면 insert 함수를 사용하면 됩니다. 어느 위치에 삽입 어떤 데이터를 삽입할 것이냐를 알아야하기 때문에 인자를 2개받습니다.
www = [‘world’,’web’] www.insert(1,’wide’) # 1번째에 ‘wide’ 원소 추가 print(www)
append와 같이 중간에 리스트 자체를 추가할 수도 있습니다.
PS4Titles = [‘WWZ’, ‘Tekken’,’GTA’,’Red Dead Redemption’, ‘FIFA’] PS4Titles.insert(2,[‘The Last Of Us Part 1’, ‘The Last Of Us Part Golf’]) print(PS4Titles)
[‘WWZ’, ‘Tekken’, [‘The Last Of Us Part 1’, ‘The Last Of Us Part Golf’], ‘GTA’, ‘Red Dead Redemption’, ‘FIFA’]원소 삭제 – remove
원소를 삭제하려면 remove를 사용해서 삭제할 수 있습니다. 이때 인덱스가 아닌 원소 자체를 넘겨줘야합니다.
countries = [‘korea’,’japan’,’china’,’US’,’UK’,’france’,’vietnam’] countries.remove(‘japan’) countries.remove(‘china’) print(countries)
[‘korea’, ‘US’, ‘UK’, ‘france’, ‘vietnam’]혹은 리스트 자체를 삭제할 수도 있습니다.
countries = [‘korea’,[‘japan’,’china’],’US’,’UK’,’france’,’vietnam’] countries.remove([‘japan’,’china’]) print(countries)
[‘korea’, ‘US’, ‘UK’, ‘france’, ‘vietnam’]원소 전부 삭제 – clear
리스트의 내용을 전부 비워내고 싶다면 clear 함수를 사용할 수 있습니다. 허나 del로도 같은 기능을 할 수 있습니다.
www = [‘world’,’web’] www.clear() #del www[:]와도 같은 동작 print (www)
[]원소를 가져온 후 삭제 – pop
pop은 원소를 가져오고 난 이후에 리스트에 삭제하는 기능을 합니다. 만약 아무런 인자를 넘겨주지 않는 경우 마지막 원소를 가져오고 리스트에서 삭제하고, 그렇지 않고 인덱스를 넘겨주면 그 인덱스의 원소를 가져온 후 삭제합니다.
countries = [‘korea’,’japan’,’US’,’UK’,’france’,’vietnam’, ‘china’] countries.pop() #마지막 원소 삭제 countries.pop(1) #1번 원소 삭제 print(countries)
[‘korea’, ‘US’, ‘UK’, ‘france’, ‘vietnam’]원소의 인덱스 찾기 – index
값이 어느 인덱스에 저장되어있는지 확인하려면 index를 사용하여 확인할 수 있습니다. 가장 1번째는 찾을 값이 주어지집니다. 이후 다른 인자가 없다면 전체 리스트를 검색하여 찾아냅니다. 그렇지 않고 시작 인덱스와 끝 인덱스를 지정하여 찾아낼 수도 있습니다.
languages = [‘C++’, ‘Java’, ‘Python’, ‘C’, ‘C#’, ‘Kotlin’] print (languages.index(‘C++’)) print (languages.index(‘Kotlin’,0,4))
0 Traceback (most recent call last): File “C:\Users\grjwu\PycharmProjects\pythonProject1\main.py”, line 5, in
print (languages.index(‘Kotlin’,0,4)) ValueError: ‘Kotlin’ is not in list 만약 인덱스를 찾아올 수 없다면 위의 에러를 만나게 되죠.
간단하게 리스트를 파이썬에서 어떻게 활용하는지 확인해보았습니다.
2.9 파이썬에서 리스트 자료형 다루기 — 데이터 사이언스 스쿨
————————————————————————— ValueError Traceback (most recent call last) < ipython - input - 5 - 78 eb5c6f0f34 > in < module > —-> 1 h1 , h2 = h ValueError : too many values to unpack (expected 2)
[Python 문법] list 자료형
>>> my_list = [ 1 , 2 , 3 ] >>> my_list [ 0 ] # 리스트의 첫 번째 요소값 1 >>> my_list [ 2 ] # 리스트의 세 번째 요소값 3 >>> my_list [ 0 ] + my_list [ 2 ] # 리스트의 첫 번째 요소값과 세 번째 요소값의 합 4 >>> my_list [ 3 ] # 리스트의 인덱스 범위를 벗어난 수를 입력하면 인덱스 에러가 난다. Traceback ( most recent call last ): File “
” , line 1 , in < module > IndexError : list index out of range >>> my_list [ – 1 ] # 리스트의 뒤에서 첫 번째 값 3 >>> my_list [ – 2 ] # 리스트의 뒤에서 두 번째 값 2 >>> my_list [ – 4 ] # 음수 값 인덱싱도 마찬가지로 범위를 벗어나면 인덱스 에러가 난다. Traceback ( most recent call last ): File “ ” , line 1 , in < module > IndexError : list index out of range
키워드에 대한 정보 파이썬 리스트
다음은 Bing에서 파이썬 리스트 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 혼자 공부하는 파이썬 18강 – 리스트 기본
- 동영상
- 공유
- 카메라폰
- 동영상폰
- 무료
- 올리기
혼자 #공부하는 #파이썬 #18강 #- #리스트 #기본
YouTube에서 파이썬 리스트 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 혼자 공부하는 파이썬 18강 – 리스트 기본 | 파이썬 리스트, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.