컨테이너 자료형
이라고 하고, 이러한 컨테이너 자료형의 데이터 구조를 자료구조라고 한다# 숫자, 문자(열), 논리형 등 모든 기본데이터를 같이 저장할 수 있다.
#strs은 list의 reference 변수
strs = [3.14, '십', 20, 'one']
#리스트안에 또 다른 리스트 저장 가능
dates = [10, 20, 30, [40, 50, 60]]
students = ['홍길동', '박찬호', '이용규', '김지은']
print(students[1])
#출력값: 박찬호
students = ['홍길동', '박찬호', '이용규', '김지은']
sLenth = len(students)
print(sLenth)
#출력값: 4
studentCnts = [[1, 19], [2, 20], [3, 22], [4, 18]]
# 변수를 2개 주면 리스트 안 리스트도 참조 가능!
for classNo, cnt in studentCnts:
print(f'{classNo}학급 학생수: {cnt}')
#위 코드블럭과 동일한 출력값을 가짐
for i in studentCnts:
print(f'{i[0]}학급 학생수: {i[1]}')
'''
출력값:
1학급 학생수: 19
2학급 학생수: 20
3학급 학생수: 22
4학급 학생수: 18
'''
sports = ['농구', '수구', '축구', '마라톤', '테니스']
strs = 'Hello python.'
for idx, str in enumerate(strs):
print(f'{idx}: {str}\t', end='')
print()
for idx, value in enumerate(sports):
print(f'{idx}: {value}\t', end = '')
append()
: 리스트 끝에 item을 추가하는 함수insert(idx, value)
: 특정 위치(인덱스)에 item을 추가하는 함수students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
students.insert(3, '김은비')
print(students)
#출력값: ['홍길동', '박찬호', '이용규', '박승철', '김지은']
print(students[3])
#출력값: 김은비
pop()
: 마지막 인덱스에 해당하는 item 삭제
pop(n)
: n index에 해당하는 아이템 삭제 가능numbers = [1, 3, 6, 11, 45, 54, 62, 74, 85]
num = numbers.pop()
print(numbers)
#출력값: [1, 3, 6, 11, 45, 54, 62, 74]
print(num)
#출력값: 85
remove(value)
: 특정 item을 삭제
students = ['강호동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동']
print(students)
#출력값: ['강호동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동']
#list 안의 모든 value값을 삭제하고 싶을 때는, while문 이용하면 됨!
while '강호동' in students:
students.remove('강호동')
print(students)
#출력값: ['박찬호', '이용규', '박승철', '김지은']
del
키워드를 사용한 삭제
- del list_name[index]
+
expend()와
+
의 차이점
- expend()를 이용해서 연결할 경우 두 개의 list 자체가 합쳐지는 개념
+
연산자를 이용해서 연결할 경우 두 개의 list가 합쳐진 새로운 list가 생성 되는 개념!
sort()
: 오름차순(기본값)으로 아이템 정렬students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print(students)
#출력값: ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
students.sort()
print(students)
#출력값: ['강호동', '김지은', '박승철', '박찬호', '이용규', '홍길동']
#오름차순 정렬
students.sort(reverse=True)
print(students)
#출력값: ['홍길동', '이용규', '박찬호', '박승철', '김지은', '강호동']
numbers = [2, 50, 0.12, 1, 9, 7,17, 35, 100, 3.14]
print(f'numbers: {numbers[2:-2]}')
#출력값: numbers: [0.12, 1, 9, 7, 17, 35]
#마지막 인수는 출력 단계
print(f'numbers: {numbers[2:-2:2]}')
#출력값: numbers: [0.12, 9, 17]
print(f'numbers: {numbers[:-2:2]}')
#출력값: numbers: [2, 0.12, 9, 17]
print(f'numbers: {numbers[::2]}')
#출력값: numbers: [2, 0.12, 9, 17, 100]
슬리이싱을 이용하여 아이템 변경 가능
students = ['홍길동', '박찬호', '이용규']
print(f'students: {students}')
studentsMul = students * 2
print(f'students: {studentsMul}')
numbers = [2, 50, 0.12, 1, 9]
print(f'numbers: {numbers}')
#각 숫자에 2가 곱해지는 것이 아닌 리스트 item이 두 번 반복됨
mumbersMul = numbers * 2
print(f'numbers: {mumbersMul}')
students = ['홍길동', '강호동', '박찬호', '이용규', '박승철', '강호동', '김지은']
print(students.index('강호동'))
#index 2와 6 사이에 있는 '강호동'을 찾음
print(students.index('강호동', 2, 6))
students = ['홍길동', '강호동', '박찬호', '이용규', '박승철', '강호동', '김지은']
print(students.count('강호동'))
#출력값: 2
1) split()
: 문자열을 특정 구분자를 기준으로 분할하여 리스트를 반환하는 함수
sentence = "Hello, how are you?"
words = sentence.split() # 기본적으로 공백을 구분자로 사용하여 문자열을 분할합니다.
print(words)
# 출력: ['Hello,', 'how', 'are', 'you?']
sentence = "apple,banana,orange"
fruits = sentence.split(",") # 쉼표를 구분자로 사용하여 문자열을 분할합니다.
print(fruits)
# 출력: ['apple', 'banana', 'orange']
2) join()
: 리스트의 각 요소를 구분자
와 함께 결합하여 하나의 문자열로 반환해줌
구분자
.join(list_name)
words = ['Hello', 'how', 'are', 'you?']
sentence = ' '.join(words) # 리스트의 각 요소를 공백으로 구분하여 하나의 문자열로 결합합니다.
print(sentence)
# 출력: 'Hello how are you?'
fruits = ['apple', 'banana', 'orange']
sentence = ', '.join(fruits) # 리스트의 각 요소를 쉼표와 공백으로 구분하여 하나의 문자열로 결합합니다.
print(sentence)
# 출력: 'apple, banana, orange'
extend(), append(), sort(), pop() 등의 item을 변경하는 method 사용 불가능
myFavortieNumbers = (1, 4, 5, 6, 7, 8)
friendFavortieNumbers = (2, 6,3, 8, 4, 5, 9)
#중복되는 item 없이 두 개의 튜플을 합치기!
for numbers in myFavortieNumbers:
if numbers not in friendFavortieNumbers:
myFavortieNumbers = myFavortieNumbers + (numbers, )
#int를 tuple로 만들려면 콤마 + 소괄호!
print(myFavortieNumbers)
sorted()
를 이용해서 tuple을 정렬할 수 있다.리스트 자료형
을 만드는 method이다.score = 9.5, 8.9, 9.2, 9.8, 8.8, 9.0
print(type(score))
#출력값: <class 'tuple'>
scoreSorted = sorted(score)
print(type(scoreSorted))
#출력값: <class 'list'>
print(scoreSorted)
#출력값: [8.8, 8.9, 9.0, 9.2, 9.5, 9.8]
key
값과 각 key값에 대응하는 value
값이 있음key
와 value
한 세트를 item 이라고 부름index
가 없음! (index를 key가 대신함)key
는 어떤 데이터를 구분하기 위한 유일한 값
이기 때문에 중복되면 안됨#중괄호로 선언, s1: key값, 홍길동: value값
students = {'s1':'홍길동', 's2': '박찬호', 's3': '이용규', 's4': '박승철'}
memInfo = {'이름': '홍길동',
'메일': 'gildong@gmail.com',
'학년': 3,
'취미': ['농구' ,'게임']}
key
와value
에는 숫자, 문자(열), 논리형 뿐만 아니라 컨테이너 자료형도 올 수 있다.- 단,
key
에는 immutable 값만 올 수 있다. ex) list는 올 수 없음
1) dic_name[key]
: value값 반환
2) dic_name.get(key)
: value 값 변환
memInfo = {'이름': '홍길동',
'메일': 'gildong@gmail.com',
'학년': 3,
'취미': ['농구' ,'게임']}
print(memInfo['이름']) #출력값: 홍길동
print(memInfo.get('이름')) #출력값: 홍길동
print(memInfo.get('거주지')) #출력값: None
dic_name[key] = value
형태로 item 추가 가능myInfo = {}
myInfo['이름'] = 'gracie'
myInfo['전공'] = 'data science'
myInfo['나이'] = 26
myInfo['e-maeil'] = 'gracie@maeil.com'
myInfo['취미'] = ['맛집탐방', '요리', '여행', '책읽기']
print(myInfo)
#출력값: {'이름': 'gracie', '전공': 'data science', '나이': 26, 'e-maeil': 'gracie@maeil.com', '취미': ['맛집탐방', '요리', '여행', '책읽기']}
#이미 존재하는 key값에 value를 추가할 경우, value가 변경 됨
myInfo['취미'] = '드럼'
print(myInfo['취미']) #출력값: 드럼
keys()
: key값을 dict_keys
객체로 반환values()
: value값을 dict_values
객체로 반환items()
: item들을 dict_items
객체로 반환dict_keys
, dict_values
, dict_items
모두 iterable 객체이다. (list로 자료구조 변경가능)
myInfo = {'이름': 'graice', '전공': 'data science', '나이': 26, 'e-mail': 'gracie@maei.com', '취미': ['책읽기', '수영']}
ks = myInfo.keys()
print(f'keys: {ks}')
print(type(ks))
vs = myInfo.values()
print(f'values: {vs}')
print(type(vs))
items = myInfo.items()
print(f'items: {items}')
print(type(items))
dic_items
객체를list
로 바꾸면, 리스트의 각items
은tuple
구조로 저장된다itemsList = list(items) print(itemsList) #출력값: [('이름', 'graice'), ('전공', 'data science'), ('나이', 26), ('e-mail', 'gracie@maei.com'), ('취미', ['책읽기', '수영'])] print(type(itemsList[0])) #출력값: <class 'tuple'>
1) del
키워드를 사용한 삭제
pop()
method를 사용한 삭제del vs pop() 차이점: pop()은 함수이기 때문에 삭제된 value를 반환 함
myInfo = {'이름': 'graice', '전공': 'data science', '나이': 26, 'e-mail': 'gracie@maei.com'}
print(myInfo)
#{'이름': 'graice', '전공': 'data science', '나이': 26, 'e-mail': 'gracie@maei.com'}
del myInfo['전공']
del myInfo['e-mail']
print(myInfo) #{'이름': 'graice', '나이': 26}
age = myInfo.pop('나이')
print(myInfo) #{'이름': 'graice'}
print(age) #26
in
, not in
키워드