yon11b

[SK 쉴더스 루키즈] 파이썬 기초 2(리스트, 튜플, 딕셔너리, 집합) 본문

보안/SK 쉴더스 루키즈

[SK 쉴더스 루키즈] 파이썬 기초 2(리스트, 튜플, 딕셔너리, 집합)

yon11b 2026. 3. 5. 09:09
반응형

리스트

자료형의 묶음을 표현. 순서를 가지는 데이터의 묶음

list(): 튜플을 리스트로 변환할 때 주로 사용하는 함수

list=10  # --> 이걸 쓰는 순간 class list는 못 쓴다.

 

list_a = [1,2,3]
list_a[0] # 변수와 같다. => 주소값
# list_a = [int_address, int_address, int_address]

 

 

리스트의 중첩

list_b = [1, 2, 'string', ['a', 'b', 'c', [10, 20, 30]] ]

가능한가?-> ㅇㅇ

변수는 모든 타입의 데이터가 가능하다. 리스트는 변수들의 묶음이다.

1: int로 저장되어 있는 메모리

2: int로 저장되어 있는 메모리

‘string’: str로 저장되어 있는 메모리

[’a’, ‘b’, ‘c’~~]: 리스트로 저장되어 있는 메모리

 

슬라이싱

 

리스트 간의 연산: +, *

 

데이터 추가

list.append: 마지막 index 뒤로 데이터를 추가
list.insert: 특정 index 위치에 데이터 추가
list_a=[1,2,3]
list_a.append(100) # [1, 2, 3, 100]
list_a.insert(0, 729) # [729, 1,2,3, 100]

None: 함수 실행 후 아무것도 반환하지 않는다.

 

삭제

remove(val): 처음 만난 지정 데이터를 삭제
pop(index): 해당 위치에 있는 데이터를 삭제

remove는 값이 여러 개인 경우 첫번째 것만 삭제

pop() : 리스트의 맨 마지막 요소를 돌려주고 해당 요소 삭제

 

정렬

sort(), reverse()

list_b=[1,4,9,2,10]

list_b.sort() # 오름차순 정렬
list_b.reverse() # 단순히 현재 상태에서 반대 인덱스로 나열
list_b.sort().reverse() # 내림차순 정렬 <-- 이건 안됨~!!
list_b.sort(reverse=True) # 내림차순 정렬 <-- 이게 맞음**

 

요소의 위치 index 값 찾기

list_b.index(2)

 

값 2의 index가 어디에 있냐?

헷갈리지 말자!! list[2] != list.index[2]

전자는 인덱스로 값 찾기고, 후자는 값으로 인덱스 찾기이다!

 

확장

list_a.extend(list_b)

list_a.extend(list_b) ⇒ list_a (list_a에 list_b를 추가하는 것. list_a의 값이 바뀌는 것!)

이거랑은 다름! --> list_a+list_b ⇒ new list!

 

튜플

리스트는 요소 값 변경이 가능. 튜플은 요소 값 변경이 불가능하다. (데이터를 안전하게 유지하기 위한 목적!)

- 튜플은 1개의 요소만을 가질 때는 요소 뒤에 쉼표(,)를 반드시 붙여야 함
    - t2=(1,)
- 소괄호를 생략해도 무방함
    - t4=1,2,3

 

중요!! unpacking

a,b,c,d=(1,2,3,4) #  튜플에 있는 값 하나하나를 각각의 변수에 할당
print(a) # 1

리스트도 가능하다!

unpacking은 swap에서 잘 활용된다.

a,b = 1,2
a,b=b,a
print(a,b) # 2 1

 

튜플은 할당은 안 되지만 슬라이싱은 된다.

print(t_b[0])
print(t_b[1:4])

딕셔너리

key-value

최신 파이썬에서는 딕셔너리가 순서를 가질 수 있음. 근데 옛날 파이썬에서는 딕셔너리는 순서를 가지지 못했다.

딕셔너리 값 추가

그냥 dict['key']=value 해주면 됨

참조

dict_2[2]
dict_2.get(3)

데이터의 구조화에 딕셔너리 많이 쓴다.

student_1 = {
	'sno': 21011892,
	'sname': 'hayeon',
	'major': 'computer engineering',
	'grade': 4
}

dict.keys() ⇒ dict_keys 라는 타입으로 반환됨.

dict.values()

dict.items() ⇒ dict_items 타입으로 반환. 그런데 이제 튜플로 반환됨

dict를 list로 바꾸려면 그냥 list(dict.items()) 이렇게 해주면 된다.

그냥 list(dict)만 하게 되면 key값만 리턴되게 된다.

그냥 dict_2(’pos’)만 하면 에러가 난다. (post 라는 키 값이 없을 때)
이때 dict_2.get(’pos’)를 하면 에러가 나질 않는다. 하지만 없는 값이기 때문에 아무것도 출력되지 않는다. 이때 우리는 값이 없어서 출력되지 않는 것인지 뭐니 모르기 때문에 **default**  값을 지정해주어서 그걸 알도록 할 수 있다.

집합

중복x

순서가 없음 ⇒ 인덱싱 사용 불가

교집합, 합집합, 차집합

 

데이터 추가: add

set_1.add(200) # 당연히 set이니까 중복 추가는 안됨!

 

데이터 리스트 추가: update

set_1.update([1,2,3,4,5])

 

특정 값 제거하기: remove

set_1.remove(200) # 200이라는 값이 없으면 에러 발생!

 

 

 

 

 

 

728x90