본문 바로가기

Python/Basic

[파이썬 기초] 파이썬 리스트 List 기초 완전 정복 1

 

오늘은 파이썬의 List에 대해서 알아보겠습니다. 

 

 

 

List ? 

0 혹은 그 이상의 요소로 만들어진다 

콤마( , )로 구분되며 대괄호( [ ] )로 둘러 쌓여있다 

 

  1. 데이터를 순차적으로 파악하는데 유용하다 
  2. 문자열과는 달리 리스트는 변경 가능하다 
  3. 현재위치에서 새로운 요소를 추가, 삭제 혹은 기존 요소에 덮어쓸 수 있다
  4. 동일한 값이 여러번 나타날 수 있다.

 

 

 

리스트 생성 방법 

 

newList = [1, 2, 3, 3.14 , '가'  , '코딩하는 공대생' ]

 

이런 식으로 리스트 생성하게 됩니다 

숫자는 그냥 적으시면 됩니다 

문자열작은따옴표 ( ' ' ) 혹은 큰 따옴표 ( " " )로 둘러 쌓이게 하고 적으시면 됩니다. 

 

좀 더 자세히 알고 싶으면 아래의 링크를 타고 이동해주세요

 

https://allhpy35.tistory.com/2 

 

[파이썬기초] 파이썬 문자열 자료형 이란? (1)

안녕하세요 오늘은 파이썬의 문자열(String) 자료형에 대해서 알아보겠습니다. 문자열(String) 이란? 문자열이란 말 그대로 문자로 이루어진 집합을 의미합니다. 위의 사진처럼 작은따옴표 혹은 큰따옴표로 둘러..

allhpy35.tistory.com

 

 

 

emptyList = [ ] 

0 혹은 그 이상의 요소로 만들어진다 하였습니다 그래서 아무것도 없는 

빈 리스트도 생성 가능합니다. 

* 대괄호로 묶여 있으니 List 인걸 알 수 있습니다.

 

 

 

 

List_1 = list() 

빈 리스트를 할당할 수 있습니다. 

 

 

 

아니면 다음과 같은 방법으로

이미 존재하는 리스트에 빈 리스트를 할당 할수 있습니다. 

 

 

 

 

List_1 = list() , emptyList = [ ] 

위의 방법은 빈리스트를 생성하는 방법입니다.

 

 

 

리스트의 요소를 추출하는 방법 

number = [1,2,3,4,5] 

 

number [0]    ->  1

 

number [1]  -> 2

사람들은 1부터 숫자를 세지만

하지만 컴퓨터는 0부터 숫자를 셉니다 

 

 

 

 

number[-1]

-1을 넣으면 가장 마지막 요소가 나옵니다.

 

number[-2]

 

number[-3] 

 

슬라이스 형태로 다음과 같이 리스트의 요소를 추출할 수 있습니다. 

number[::]   와 number[:] 는 같다는 걸 알 수 있습니다 

 

 

 

number [0:-1] 의 결과를 보니 -1은 마지막 요소를 가리키는데 

다른 숫자가 나왔습니다.

 

자 여기서 슬라이스 요소에는 이러한 성질이 있습니다.

 

완벽히 알고 넘어가고 싶다!?

   아래의 링크를 클릭해주세요

https://allhpy35.tistory.com/4

 

[파이썬 기초] 파이썬 문자열 슬라이싱과 인덱싱 | python Basic python String slicing and Indexing

안녕하세요 오늘은 문자열 Slicing(슬라이싱) 과 문자열 Indexing(인덱싱) 에대해서 배워보겠습니다. word1 = "1. If you do not walk today, you will have to run tomorrow" word2 = "2. Put off for one day a..

allhpy35.tistory.com

[start : end : step]

 

start : 시작하는 숫자 

end : 끝나는 숫자 

step : step에 적힌 숫자만큼 문자를 건너뛰면서 오프셋부터 오프셋까지 추출한다

 

number[ 0 : -1] 

number 리스트의 offset 0부터 -1까지 범위를 가리킵니다 

하지만 

 

 

number[0:-1] 라는 의미는

0 <= X < -1 

0보다 같거나 크거나 -1보다 작으면서 같지 않은 것이라는 범위를 가리킵니다

 

 

그래서 number[0:-1]은 위와 같은 결과가 나온 것입니다. 

 

그러면 처음부터 가장 마지막까지 하려면 어떻게 해야 하나요? 

    number[:] 혹은 number[::] 이두가지를 이용하시면 됩니다.

 

[Offset] 으로 항목 바꾸기

number[ 3 ] 

대괄호의 들어가는 숫자를 Offset 이라고 합니다. 

 

 

 

 

newList = ['가', '나', '다', '라']

 

newList[0] = 1 

0번째의 요소를 1과 바꿔라 는 의미입니다. 

 

 

5라는 offset은 newList트에 존재하지 않기 때문에 IndexError 가 납니다. 

 

 

 

 

 

리스트의 요소를 추가하는 방법 

append()

리스트의 끝에 새 항목을 추가한다 

 

 

 

newList = [1, 2, 3, 4]

 

newList.append(5)

 

 

newList.append('가나다') 를 실행하면 위 사진과 같이 나온다

 

 

insert( offset , 넣고자 하는 요소) 

1. 원하는 위치에 넣고 하자하는 요소를 추가할 수 있다

2. 덮어써지지는 않는다

3. 리스트의 끝을 넘는 즉 범위를 벗어나는 offset은 append() 처럼 가장 마지막에 요소가 추가된다

 

 

 

 

 

newList = [ '가', '나', '다', '라']

 

newList.insert(0,'첫번째임')

 

 

 

newList.insert(123,'코딩하는공대생')

리스트의 범위를 벗어나는 offset은 가장 마지막에 요소가 추가됩니다.

오류 가나지 않으니 걱정 마세요 ㅎㅎ

 

 

newList.insert(0,123) 

덮어씌우기가 안됩니다.

 

0번째 위치에 숫자 123을 바꾸려 했으나 insert 함수는 추가하는 함수이기 때문에

덮어서 쓰기가 안되고 원래의 0 째 요소 앞에 다시 추가 가되는걸 알 수 있습니다.

 

 

 

 

 

리스트 안에 리스트

List

리스트는 다른 타입의 요소도 포함할 수 있다

 

 

number = [ 1, 2, 3, 4, 5 ]

alphabet = [ 'a', 'b', 'c', 'd' ]

hangul  = [ '가', '나', '다', '라' ]

 

 

결과화면

allList = [ number, alphabet, hangul ] 

이런 식으로 리스트 안에 리스트가 포함될 수 있습니다.

 

 

 

 

 

 

extend() 

하지만 리스트를 위와 같이 allList = [ number, alphabet, hangul ] 식으로 한 것은

리스트 안에 리스트 지만 리스트의 요소만 가지고 병합하고 싶을 때 

allList.extend(number) 이런 식으로 사용한다.

 

 

이전에 있던 자료를 지우기 위해서

빈 리스트를 할당한 다음에 진행해주세요

allList.extend(number) 다음에 결과를 보니 잘 들어간 걸 확인할 수 있었습니다.

 

 

 

대괄호를 보면서 리스트 안에 리스트가 아닌 리스트의 요소가 들어간 걸 확인해주세요

 

allList.extend(alphabet)

allList.extend(hangul) 

 

여기서 궁금한 점 하나씩게속 추가해야 하나요?

한 번에 추가할 수는 없을까?

 

빈 리스트로 다시 할당 해준 다음에 

allList.extend(number,alphabet,hangul) 이과 같이 했더니 

 

TypeError 오류가 났습니다

그러므로  한 번에 하나씩만 추가 가능하다는 걸 알게 되었습니다.

 

 

복합 연산자 += 

 

a + = b

풀어서 설명하면

a = a + b 라는 뜻입니다. 

 

먼저 a 와 b를 더한 후에 a 에 대입하라 라는 뜻입니다.

 

그러면 a 가 중복으로 더하게 되는 게 아닐까 할 수 있습니다?!

같이 알아볼까요?

 

a 에는 1을 대입하고 

b 에는 2를 대입한 후 

a + = b 은  a = a + b같으니까 위와 같이 해보았습니다

결과는 3이 나왔습니다 

만약 중복으로 더해졌다면  a 가 두 번 즉 2 가 되고 정답은 

2 + 3 이 되어서 5 가 나왔겠죠 하지만 3이 나온 것으로 보아 

a 가 중복되어 계산된다는 것이 아니다 라는 것을 알 수 있었습니다. 

 

 

c += d 방식을 사용해도 같은 결과를 볼 수 있습니다.

 

 

자 본론으로 들어와서 += 를 사용하여 리스트를 병합해 볼까요?

 

복합 대입 연산자 += 를 써서 해도 extend() 와 같이

리스트의 요소를 추가하게 됩니다.

 

 

number = [ 1, 2, 3, 4, 5 ]

alphabet = [ 'a', 'b', 'c', 'd' ]

hangul  = [ '가', '나', '다', '라' ]

 

 

 

allList += number

이런 식으로 리스트의 요소를 병합할 수 있습니다.