파이썬/파이썬 입문 공부일지

파이썬 공부일지 13. 리스트!

Tomitom 2022. 10. 12. 16:20
반응형

이제 파이썬으로 본격 코딩을 조금조금씩 맛보고 있는데, 진짜 재밌네요!

무에서 유를 만드는 느낌... 정말 망망대해에서 그물 짓고 있는 기분이에요.. 

다시 또 시작해봅시당.

 

지금까지 공부한 자료형은 문자열, 숫자, 불. 세 가지 입니다.

이제 새로운 자료형으로 리스트를 공부해볼게요. 

 

지금까지 사용한 숫자, 문자, 수식 같은 것이 개별적인 한 개의 자료였다면

리스트는 여러가지를 모아서 하나로 만드는 거예요. 

 

가령 필통 속에 지우개, 연필, 종이, 자, 칼이 들어있다면 그것들은 모두 독립적인 자료이고 

그것을 하나에 담고 있는 필통은 리스트예요. 

 

리스트에 자료를 넣는 것은 [ ] 대괄호를 열었다가 속에 자료를 담고 닫으면 돼요. 

그 안에 담긴 자료들을 요소element 라고 합니다. 

반드시 그 사이사이에 쉼표를 삽입해야 합니다. 

 

ex)

[1, 2, 3, "ㄱ","ㄴ","ㄷ", True]

[요소, 요소, 요소 ... ]

 

리스트 안에 있는 요소들을 사용하려면 리스트 이름 바로 뒤에 대괄호를 입력하고,

자료의 위치를 나타내는 숫자를 입력합니다. 

여기서 잠깐... 자료의 위치를 나타내는 숫자는 인덱스 ! 이전에 배웠었어요.

 

https://blue-dot.tistory.com/7

 

파이썬 공부일지 5. 문자열 연산자!

오늘도 공부를 시작해봅니다.. 아침에 학원 올 때 시간을 자꾸 놓쳐서 아침 식사를 못 하고 나와요. 시리얼이랑 우유는 챙겼는데, 배고파서 점심까지 제정신을 유지할 수 있을지 모르겠습니다.

blue-dot.tistory.com

 

자료의 위치를 나타내는 숫자를 입력하는 것을 인덱싱이라고 합니다. 

리스트에도 문자열과 마찬가지로 인덱스가 있는데, 파이썬은 제로 인덱스를 사용하고 있으므로 0부터 숫자가 시작됩니다. 

 

리스트는 인덱싱과 슬라이싱을 처리할 수 있습니다. 

인덱스 - 해당 인덱스의 자료를 보여주는 것

슬라이싱 - 해당 인덱스 범위 만큼의 자료를 보여주는 것. 슬라이싱은 콩 심은데 콩납니다! 

리스트에 슬라이싱을 하면 그 결과도 리스트입니다. 

 


 

1. 대괄호 안에 음수를 넣어 뒤에서부터 요소를 선택할 수 있습니다. 

사랑~용기~

이렇게요! 제로 인덱스이기 때문에 -1 을 하면 맨 뒷 요소를 뽑아옵니다. 

 

2. 리스트 접근 연산자(대괄호 []) 를 이중으로 사용할 수 있습니다. 

리스트로 뽑아낸 자료에서 또 인덱싱을 할 수 있어요. 

희망~

 

-1 을 넣어서 맨 뒷자료인 희망의 요소를 뽑아오고 그 희망에서 망을 뽑아냈어요 (희망을 뽑아내.. ) 

대괄호를 두 번 쓰면 가능해요!

 

3. 리스트 안에 리스트를 넣을 수도 있습니다. 

그렇다면 이중으로 대괄호를 사용하면 다른 리스트를 가져올 수도 있는 거예요. 

 

집착광기피폐..

리스트의 길이를 넘는 인덱스 요소를 뽑으려고 하면 오류가 발생해요. 

3개 밖에 없는 리스트에서 4번 째 인덱스를 뽑으려고 하면요. (당연하겠죠..) 

 

4. 리스트는 연산이 가능합니다. 

연결(+), 반복(*), len() 함수가 사용 가능합니다. 이전 문자열에 적용할 수 있는 연산자는 리스트에도 활용할 수 있어요. 

 

리스트 연산은 직접 해보면서 적용해보겠습니다. 



list_a = [1,2,3]
list_b = [4,5,6]

 

리스트 a와 b에 요소들을 담아주어요. 

print("#리스트")
print("list_a =",list_a)
print("list_b =",list_b)
print()

 

리스트의 목록을 출력할 수도 있고 


print("#리스트 기본 연산자")
print("list_a + list_b =",list_a+list_b)     <- 리스트 끼리 연결할 수도 있습니다.   
print("list_a * 3 =",list_a*3)     <- 반복 연산자를 사용하면 리스트를 반복할 수 있어요. 
print()

print("#길이 구하기")
print("len(list_a) =",len(list_a))    <- 리스트가 몇 개의 요소로 구성되어 있는지 길이를 구할 수 있어요.

 

짠.

 

len() 함수를 사용할 때 괄호 안에 문자열을 넣어주면 문자열의 글자 수 (길이)를 세어주지만, 리스트를 넣어주면 요소의 개수를 세어줍니다. [14153,456,897,2136,6897] 가 리스트에 들어가있다면 값은 5인 거예요. 

 

 


리스트가 문자열과 많이 비슷한데요. 

다른 중요한 차이점이 있습니다. 

 

● 문자열은 원본을 변경할 수 없어요. = immutable

● 리스트는 원본을 변경할 수 있어요. = mutable

 

리스트에 요소를 추가할 수 있어요. 

append() 와 insert(), extend() 예요. 

 

- append() 함수는 리스트 뒤에 요소를 추가하는 거예요. 

리스트명.append(추가할요소)

 

용기~

 

- insert 함수는 리스트의 중간에 요소를 삽입하는 거예요. 

리스트명.insert(삽입할 위치, 추가할요소) 

 

 

광기~...

 

- extend 함수는 한 번에 여러 개의 요소를 추가할 수 있습니다. 

리스트명.extend([요소, 요소, 요소])

 

좌절하지 말기..

 

리스트에 리스트를 추가하는 것이 지금까지 두 개의 방법이 있었는데요 

extend 와 + 연산자의 차이점이 분명하게 있어요! 

 

 + 연결 연산자로 리스트를 연결하면 리스트의 원본은 그대로 유지되고, 새로운 리스트가 생성됩니다.

(피연산자 리스트들은 그대로 있어요.)

 반면 extend 함수를 사용해 리스트를 확장하면, 원본 리스트 자체가 확장되어 변경됩니다. 

(내용이 변합니다!) 

 

 

 

인덱스로 제거하기 

인덱스를 제거하는 방법은 여러가지예요. 

del 키워드 pop(), remove(), clear()

 

del 키워드는 리스트의 요소 뿐 아니라 리스트 자체를 삭제할 때도 사용할 수 있습니다.

더불어 다른 자료형의 데이터들도 통째로 삭제할 수 있습니다.

 

광기를 지우고....

 

del 리스트명[인덱스]  이렇게 씁니다. 인덱스의 값을 범위지정으로 한꺼번에 지울 수도 있어요. [1:3] 처럼요. 

이것을 슬라이싱이라고 하는데, 리스트에 : 연산자를 입력해서 범위 지정하여 여러가지 요소를 선택하는 거예요. 

 

리스트[시작 인덱스:끝 인덱스: 단계]

단계란 지정한 숫자만큼 인덱스를 건너 뛰면서 가지고 오는 거예요. 

 

 

ex) feeling[0:3:2] -> 0번째부터 3번째까지 자료를 가져오는데 0번째에서 두 번째 칸으로 건너 뛰어서 가져와라.

 

pop()함수는 제거할 위치에 있는 요소를 제거하는데, 인덱스를 입력하지 않으면 -1이 들어가는 것으로 취급해서 

마지막 요소를 제거합니다. 

 

리스트명.pop(인덱스)

 

함수를 입력하면 지운 값이 뜹니다.

좌절도 지우고...

 

remove () 함수는 값으로 지우는 거예요. 

리스트.remove(값)

 

분노를 지우고.. 사랑과 희망과 용기만 남기기

 

 

단 remove 함수로 지정한 값이 리스트 내부에 여러 개가 있어도 가장 먼저 발견되는 하나만 제거합니다. 

리스트에 중복된 여러 개의 값을 모두 제거하려면 반복문과 조합해서 사용해야해요. 

 

clear() 함수는 리스트 내부의 요소를 모두 제거할 때 사용합니다. 

리스트.clear()

그리고 평온한 상태...

 

 

 

 

그럼 리스트를 정렬할 수도 있겠죠! 

 리스트를 정렬할 때는 sort() 함수를 쓰면 됩니다. 

정렬 : 일정한 규칙에 따라 나열하는 거예요. ex) 오름차순, 내림차순 

(오름차순 : 뒤로 갈수록 커져야 하는 값

내림차순 : 뒤로 갈수록 작아져야 하는 값)

 

sort 함수를 그냥 사용하면 오름차순이에요.

 

 

 

number.sort(reverse=True) 을 적용하면 내림차순이 됩니다. 

 

 

리스트의 내부에 어떤 값이 있는지 확인할 수 있는 방법도 있습니다. 

바로 in 과 not in 연산자를 사용하는 거예요. 

 

in 연산자는

값 in 리스트 로 사용합니다. 

결과값은 True 혹은 False 로 표기됩니다. 

 not in 연산자는

값 not in 리스트 로 사용됩니다. 

결과값은 in 연산자와 반대로 출력됩니다. 

 

 

 

 

여기까지 리스트에 대해서 공부했습니다. 

다음에는 반복문을 배울 예정이에요. 

아자장.. 힘내봅시다! 

반응형