오늘은 비슷한 개념이라 헷갈리기 좋은 List,Tuple, Set, Dictionary를 각각 비교하며 개념을 확립해 나가보고자 한다! 🙂
개념을 정확하게 익히고, 필요할 때 문법에 맞춰 적재적소 꺼내쓸 수 있을만큼 복습을 열심히 하자!
대괄호 [ ] 를 통해 원하는 값을 나열하는 방식으로 생성할 수 있으며, 각각의 값은 쉼표를 통해서 저장함
이 때, String은 " " 큰 따옴표 안에, int, boolean 등은 그 자체로 작성해주면 된다.
ex) values = [ "one", 2, True ]
List의 순서는 index를 통해 표현하며, 0부터 시작한다!
index의 마지막은 List 길이의 -1 값을 갖는다.
전체의 길이를 알기 위해서는?
values.len()
을 활용할 수 있음
List 또한 List의 요소가 될 수 있다. 이러한 List를
Multi-dimensional list (다차원 리스트)라고 칭한다!
ex) [["정우성",40], ["수지",28]]
다차원 리스트의 데이터는 접근하려는 깊이만큼 브라켓을 추가하여 데이터에 접근할 수 있다.
처음 접근하려는 차원의 데이터가 List라면 다시 [] 추가하여 index로 다음 차원의 데이터에 접근할 수 있다!
ex)
any_list = [[1,2,3],[4,5,6][7,8,9]10,11]
any_list[2][1] : 2번째 index의 1번째 항목 _ 8 출력!
any_list.append(20) : 11 뒤 20이 붙음
list에서 데이터를 추가할 때
list_name.append(추가내용)
의 방식으로 가능함.
append를 사용하면 가장 뒤에 데이터가 위치하게됨!
⭐️ 원하는 위치에 데이터를 넣으려면? insert를 사용한다!
list_name.insert(1,8) : 1번째 위치에 정수 8넣기
list에서 데이터를 제거할 때
pop을 사용한다. list_name.pop() : 맨 뒤 데이터 제거
pop도 insert 처럼 (위치,데이터) 를 삽입하면 원하는 위치의 데이터를 제거할 수 있다.
list의 데이터가 많아 특정 데이터의 index 위치가 궁금할 때:
list.index(특정데이터)
의 방식으로 위치를 알 수 있다!
출력이 필요하면 print 찍어보기!
List의 Index를 호출할 때는 [] 대괄호에 숫자를 넣어 호출한다.
List는 각각의 Index에 담긴 데이터를 자유롭게 수정할 수 있다.
ex) 상단의 numbers List의 데이터를 수정한다면?
numbers[0] = 30
numbers list data의 첫번째 값을 30으로 수정!
List에 추가할 element가 1개 이상일 때는? '+'를 활용할 수 있다!
단순 요소를 합할 때도 사용되지만, List와 List도 합해줄 수 있다.
list1 = [1,2,3,4]
list2 = [5,6,7]
list1 = list1 + list2
print(list1) [1,2,3,4,5,6,7]
비어있는 리스트 생성하기
my_list = []
my_list.apppend(1)
my_list = my_list + [2.3]
print (my_list)
list_name [start : stop : step]
food = [ "닭가슴살" , "과일" , "삼겹살" , "보리밥", "닭갈비" ]
food_sub = food [ 0:3:2 ]
print (food_sub)
: 0번부터 2개씩 건너뛰어서 닭가슴살, 삼겹살이 출력됨!
food_sub = food [ :2 ] : 0부터 1까지 - 닭가슴살, 과일 출력
food_sub = food [ 2:] : 2부터 끝까지 - 삼겹살, 보리밥, 닭갈비 출력
del food [3] : 보리밥 삭제. 요소가 하나씩 당겨짐
food.remove("보리밥")
list와 비슷하게 요소를 저장할 때 쓰인다. 대괄호 대신
( ) 일반 괄호를 사용하고, list는 수정이 가능하나 tuple은
한번 선언되면 수정이 불가능하다.
tuple 선언 문법 : my_tuple = (1,2,3)
tuple 호출하기 : my_tuple [0] my_tuple [1:2]
list와 똑같이 요소를 읽어들이고 slicing 할 수 있음
일반적으로 tuple은 2개~5개 사이의 요소를 저장할 때 사용하며, 특정 데이터를 즉석적으로 표현하고 싶을 때 사용함!
list 처럼 여러 타입의 요소를 저장할 수 있음.
set1 = {1,2,3} set2 = set({1,2,3})
my_set = {1,2,3,1}
print (my_set) : {1,2,3} 만 출력됨
set2 = my_set({1,2,3,1})
print(set2) : {1,2,3} 출력
my_set.add(4) : 넣을 데이터를 ( ) 안에 표시
my_set.remove(2) : 지울 데이터를 ( ) 안에 표시
my_set = {1,2,3,4}
if 1 in my_set :
print ("1 is in the set")
if 4 in my_set :
print ("5 is not in the set")
set1 = {1,2,3,4,5,6}
set2 = {4,5,6,7,8,9}
print(set1 & set2) : {4,5,6} 출력
print(set1.intersection(set2)) : {4,5,6} 출력
print(set1 | set2) : {1,2,3,4,5,6,7,8,9} 출력
print(set1.union(set2)) : {1,2,3,4,5,6,7,8,9} 출력
중괄호 { } 를 통해 선언하며, key와 Value 값으로 이루어져 있음.
각각의 key : value 들은 , 로 구분함
기본 문법 : my_dic = { "key1" : "value1", "key2" : "value2"}
dictionary - key에 대해 기억해야할 사항들!
- key는 string 뿐 아니라 숫자도 가능함
- key값은 중복될 수 없음
: 이미 존재하는 key 값이 또 추가되면 기존의 key 값의 요소를 치환하게 됨
dodam = { "실명" : "김도담" , "영어이름" : "sally", "사는곳" : "경기도" }
dodam["실명"] : "김도담" 이라는 value 출력
dodam = { "실명" : "김도담" , "영어이름" : "sally",
"사는곳" : "경기도", "실명" : "김샐리" }
print(dodam)
dodam = { "실명" : "김샐리" , "영어이름" : "sally",
"사는곳" : "경기도" } : 중복되었던 "실명" data가 나중에 있던 요소로 변경됨
dictionary에서 새로운 요소 추가하기
값이 동일한 key가 이미 존재하면 새로 추가되는 요소가 그 전의 요소를 치환한다는 사실을 꼭 기억하기!
요소를 수정해야 할 때는 key 값을 활용함
dictionary_name[new_key] = new_value
의 형태로 기재!
dict = {1:"one", "two":2}
dict["three"] = 3
print(dict) : {1:"one", "two":2, "three":3}
비어있는 dictionary 선언할 때 : { } . 요소가 없는 중괄호 사용
dictionary에서 요소를 삭제하는 방법 : key값 사용하기
ex)
my_dict = { }
my_dict[1] = "one"
my_dict[2] = "two"
print(my_dict) > {1:"one",2:"two"}
del my_dict[1] < key 값을 사용하여 삭제
👩🏻💻 List 관련 : 시간이 오래걸렸던 문제들
29.Assignment
Input으로 주어진 리스트의 첫번째와 마지막 element의 값을 더한 값을 리턴 해주세요. 만일 리스트가 비어있다면 0이 리턴되어야 합니다.
⭕️ 정답
if len(my_list) == 0 :
return 0
else:
return my_list[0]+my_list[-1]
if len(my_list) == 0 return 0
을 사용해주어야 한다. 37.Assignment
아래 조건을 만족하는 merge_and_swap 함수를 완성 하세요.
-2개의 리스트를 input으로 받습니다.
-input 받은 2개의 리스트를 하나의 리스트로 합칩니다.
-합쳐진 리스트의 첫 element와 마지막 element를 서로 바꾼 후 리스트 전체를 리턴 합니다.
-input 모두 빈 리스트이면 빈 리스트를 리턴합니다.
⭕️ 정답
def merge_and_swap(list1, list2):
if len(list1) == 0 and len(list2) == 0:
return list2
list2 = list1+list2
list2[0],list2[-1] = list2[-1],list2[0]
return list2
if len(list1) == 0 and len (list2) == 0 :
return list2