[Python] 3. 복수의 데이터 다루기 (2)
[Python] 3. 복수의 데이터 다루기 (2)
3. List 이해 및 실습
3) list
# list [] 안에 ,(콤마)
list_a = [1, 2, 3, 4]
list_b = ["a", "b", "c"]
list_c = [True, False]
list_d = [1, "a", True]
print(list_a)
print(list_b)
print(list_c)
print(list_b)
# reslut
# [1, 2, 3, 4]
# ['a', 'b', 'c']
# [True, False]
# ['a', 'b', 'c']
4) list 의 인덱싱과 슬라이싱
numbers = [0, 1, 2, 3, 4, 5, 6, 7]
print(numbers[0]) # 0번째 인덱스
print(numbers[3:5]) # 3번째~5번째 전까지 슬라이싱
# result
# 0
# [3, 4]
list_lang = ["JAVA", "C", "PYTHON", "GO"]
print(list_lang[0][1]) # 1번째 요소에서 2번째 문자를 표시
print(list_lang[2][2:4]) # 3번째 요소에서 2~3번째 문자를 표시
# result
# A
# TH
list_lang[1] = "C++" # 2번째 요소를 C++로 바꾼다
print(list_lang)
# result
# ['JAVA', 'C++', 'PYTHON', 'GO']
list_lang[1:3] = ["C#", "PYTHON3"] # 2~3번째 요소를 각각 C#, PYTHON3로 바꾼다
print(list_lang)
# result
# ['JAVA', 'C#', 'PYTHON3', 'GO']
5) list 메서드 (요소를 추가하는 방법)
- list( ) , append( ) , extend( ) , insert( )
list_lang = ["JAVA", "C", "Python", "GO"]
print(len(list_lang)) # len()을 통해 list_lang의 갯수를 파악
# result : 4
# append() 리스트 맨 뒤에 "인덱스"를 추가 // 마지막 인덱스 : -1
list_lang.append("Ruby")
print(list_lang)
# result
# ['JAVA', 'C', 'Python', 'GO', 'Ruby']
# extend() 리스트 맨 뒤에 "요소"를 추가
list_a = [1, 2, 3]
list_lang.extend(list_a) # list_lang 마지막에 extend를 이용해 list_a의 요소를 추가
print(list_lang)
# result
# ['JAVA', 'C', 'Python', 'GO', 'Ruby', 1, 2, 3]
# insert(index, data) 원하는 위치에 데이터를 입력 가능
list_lang.insert(0, "R")
print(list_lang)
# result
# ['R', 'JAVA', 'C', 'Python', 'GO', 'Ruby', 1, 2, 3]
6) list 메서드 (요소를 삭제하는 방법)
- pop( ), remove( ), del
list_lang = ["JAVA", "C", "Python", "GO"]
# pop() 제일 뒤에있는 요소를 반환, 삭제하는 메서드
print(list_lang.pop()) # result : GO // GO를 반환시킴
print(list_lang)
# result
# ['JAVA', 'C', 'Python'] // 반환 된 Go 외의 값 출력
# remove() 해당 요소를 삭제
list_lang.remove("Python")
print(list_lang)
# result
# ['JAVA', 'C']
# del 지정한 인덱스를 삭제
del list_lang[1] # 2번째 인덱스를 삭제한다
print(list_lang)
# result
# ['JAVA']
7) list 메서드 (기타 메서드)
- reverse( ), sort( ), sort(reverse = True)
# list 정렬로 숫자, 알파벳, 한글 모두 가능
numbers = [1000, 5000, 160, 100, 20, 1234]
# revers() 기존 순서 역순으로 정렬(내림차순x)
numbers.reverse()
print(numbers)
# result
# [1234, 20, 100, 160, 5000, 1000]
# sort() 오름차순으로 정렬
numbers.sort()
print(numbers)
# result
# [20, 100, 160, 1000, 1234, 5000]
# sort(reverse = True) 내림차순으로 정렬
numbers.sort(reverse = True)
print(numbers)
# result
# [5000, 1234, 1000, 160, 100, 20]
names = ["홍길동", "김철수", "박영희"]
names.reverse()
print(names)
# result
# ['박영희', '김철수', '홍길동']
names.sort()
print(names)
# result
# ['김철수', '박영희', '홍길동']
names.sort(reverse=True)
print(names)
# result
# ['홍길동', '박영희', '김철수']
# 숫자 뿐만 아니라 한글, 알파벳에서도 메서드 사용이 가능하다.
8) ASCII (아스키코드)
- ASCII Table 참고
- 문자열의 코드값을 비교해서 문자의 순서를 구분하게 된다.
9) in 연산자와 not in 연산자
# in 연산와 not in 연산자
list_lang = ["JAVA", "C", "Python", "Go"]
numbers = [1, 200, 3, 50, 5, 99, 7, 55, 9]
# in 연산자 : 값이 있으면 True, 없으면 False
print(50 in numbers)
# result : True
print("C" in list_lang)
# result : True
print("Java script" in list_lang)
# result : False
# not in 연산자 : in 연산자와 반대
print(50 not in numbers)
# result : False
print("C" not in list_lang)
# result : False
print("Java script" not in list_lang)
# result : True
10) index 복습
text = ["가", "나", "다"]
print(text[1:2]) # result : ['나']
11) 이차원 list
- 이차원 list 기초
# 이차원 list
td_number = [[10, 20, 30], [1, 2, 3]]
print(td_number)
# result
# [[10, 20, 30], [1, 2, 3]]
print(td_number[0]) # 첫번째 리스트 출력
# result
# [10, 20, 30]
print(td_number[0][0]) # 1행 1열 요소 출력
# result
# 10
print(td_number[1][2]) # 2행 3열 요소 출력
# result
# 3
- 이차원 list slicing
# 이차원 list slicing
td_number = [[10, 20, 30], [1, 2, 3]]
print(td_number[0][0:2]) # 1행에서 1~2번째 요소 출력
# result
# [10, 20]
print(td_number[1][1:3]) # 2행에서 2~3번째 요소 출력
# result
# [2, 3]
4. Tuple, Dictionary, Set 이해
1) Tuple
- tuple : 덧셈, 뺄셈, 곱셈 등 가능 하지만 추가, 삭제, 수정이 불가능하다.
# list[] // tuple()
numbers = (1, 2, 3)
print(numbers)
print(type(numbers))
# result
# (1, 2, 3)
# <class 'tuple'>
print(2 * numbers)
# result
# (1, 2, 3, 1, 2, 3)
- unpacking 안에 들어 있는 요소들을 여러 변수에 나누어서 대입
# 언팩킹
numbers = (1, 2, 3)
number1 = numbers[0]
number2 = numbers[1]
number3 = numbers[2]
print(number1, number2, number3)
# result : 1 2 3
# 언팩킹 - 간단하게 코드 줄이면
# 요소의 갯수와
numbers = (1, 2, 3)
number1, number2, number3 = numbers
print(number1, number2, number3)
# result : 1 2 3
# 언팩킹할 요소의 갯수가 변수의 갯수보다 많으면 ValueError 발생
numbers = 1, 2, 3, 4
number1, number2, *number3 = numbers
# *을 이용해 에스터리스크를 사용하여 남는 요소 전체를 담을 변수를 만든다.
print(number1, number2, number3)
# result : 1 2 [3, 4]
# 메모리의 주소값은 다르지만, 마치 tuple에 추가된것 처럼 표현하는 방법
# 새로운 tuple을 만들어 객체를 생성한 것
numbers = 1, 2, 3, 4
print(id(numbers)) # id: 2020286484208
numbers += 5, 6
print(numbers)
# result : (1, 2, 3, 4, 5, 6)
print(id(numbers)) # id: 2318642671872
2) Dictionary
- 키와 값을 기반으로 값을 저장
# dictionary ex)
people = {
"name": "김철수",
"phone": "010-0000-0000"
}
print(people["name"],people["phone"])
# result
# 김철수 010-0000-0000
# ex2)
books = {"Daniel Pink":["파는것이 인간이다.","언제 할 것인가"], "Eric Schidt":"새로운 디지털 시대"}
print(books["Daniel Pink"])
# result
# ['파는것이 인간이다.', '언제 할 것인가']
print(books["Eric Schidt"])
# result
# 새로운 디지털 시대
# ex3) dictionary 요소 추가
coffee = {"JAVA":2500, "Americano":2500, "Latte":3000}
coffee["JAVA"] = 3000 # 요소의 값 변경
print(coffee["JAVA"]) # result : 3000
coffee["Moca"] = 3500 # 값 추가 방법
print(coffee)
# result
# {'JAVA': 3000, 'Americano': 2500, 'Latte': 3000, 'Moca': 3500}
del coffee["JAVA"] # 값 삭제 방법 1
print(coffee)
# result
# {'Americano': 2500, 'Latte': 3000, 'Moca': 3500}
coffee.pop("Latte") # 값 삭제 방법 2
print(coffee)
# result
# {'Americano': 2500, 'Moca': 3500}
- Dictionary Method (.get, .keys, .values, .items, in & not in 연산자)
# dictionary Method
coffee = {"Java":2500, "Americano":2500, "Latte":3000}
coffee["Moca"] = 3500
# .get 메서드 : key값을 이용해 요소 확인
print(coffee.get("Latte")) # result : 3000
#.keys 메서드 : 모든 키를 확인(keys)
print(coffee.keys())
# result
# dict_keys(['Java', 'Americano', 'Latte', 'Moca'])
#.values 메서드 : 모든 값을 확인
print(coffee.values())
# result
# dict_values([2500, 2500, 3000, 3500])
#.items 메서드 : 모든 키와 값을 확인(items)
print(coffee.items())
# result
# dict_items([('Java', 2500), ('Americano', 2500), ('Latte', 3000), ('Moca', 3500)])
# it 연산자와 not in 연산자
print("Latte" in coffee) # True
print("Americano" not in coffee) # False
3) 집합
# 집합 : 순서가 정해져 있지 않고, 중복 허용 되지 않음
week = {"월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"}
print(week)
# result
# {'월요일', '목요일', '화요일', '일요일', '금요일', '토요일', '수요일'}
# Add 메서드 : 집합 요소 추가
week.add("화요일") # 화요일이 중복됨으로 적용되지 않음.
print(week)
# result
# {'월요일', '목요일', '화요일', '일요일', '금요일', '토요일', '수요일'}
# .add를 이용해 tuple 추가 : tuple의 형태로 추가됨
week.add(("일주일",))
print(week)
# result
# {'월요일', '수요일', ('일주일',), '목요일', '금요일', '일요일', '화요일', '토요일'}
# .update를 이용해 tuple 추가 : 요소만 추가
week.update(("일주일",))
print(week)
# result
# {'일요일', '금요일', '토요일', ('일주일',), '화요일', '월요일', '수요일', '일주일', '목요일'}
- 집합을 통한 연산
합집합(|)
,교집합(&)
,차집합(-)
합집합(|)
- 두 집합의 모든 원소를 합한 집합교집합(&)
- 공통된 원소의 집합차집합(-)
- a라는 집합에서 b라는 집합에 있는 원소를 뺀 집합- 원소 삭제 (.remove)
# 집합을 통한 연산
a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7}
# 합집합(|)
print(a | b)
# result
# {1, 2, 3, 4, 5, 6, 7}
# 교집합(&)
print(a & b)
# result
# {3, 4, 5}
# 차집합(-)
print(a - b)
# result
# {1, 2}
# 원소 삭제하는 방법
a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7}
a.remove(4)
print(a)
# result
# {1, 2, 3, 5}