본문 바로가기
프로그래밍 언어/Python

리스트, 튜플, 딕셔너리, 세트

by 진진리 2023. 9. 15.
728x90

리스트

리스트명 = [값1, 값2, 값3, ...]

aa = []  # 빈 리스트 생성
aa.append(0)  # 항목 추가
aa.append(1)
aa.append(2)
len(aa)  # 3, 리스트 항목 개수

aa[-1]  # 2, 맨 뒤에서부터 -1
aa[0:2]  # [0, 1, 2]

bb = [3, 4, 5]
aa + bb  # [0, 1, 2, 3, 4, 5]
aa * 3  # [0, 1, 2, 0, 1, 2, 0, 1, 2]

cc = [10, 20, 30, 40, 50, 60, 70, 80, 90]
cc[::2]  # [10, 30, 50, 70, 90] 건너뛸 때 사용
cc[::-2]  # [90, 70, 50, 30, 10]

한 리스트에 다양한 데이터형을 섞어서 만들 수 있음

 

 

  • 리스트 값 변경 & 삭제
aa = [10, 20, 30]
aa[1] = 200
aa  # [10, 200, 30]

aa[1:2] = [200, 201]
aa  # [10, 200, 201, 30]

aa[1] = [30, 40]
aa  # [10, [30, 40], 201, 30]

del(aa[1])
aa  # [10, 201, 30]

bb = [10, 20, 30, 40, 50]
bb[1:4] = []
bb  # [10, 50]

 

  • 리스트 자체 삭제

1. aa = [];

2. aa = None;   # 출력하면 아무 것도 안나옴

3. del(aa);    # 오류 발생

 

 

  • 리스트 조작 함수
함수 설명 사용법
append() 리스트 제일 뒤에 항목을 추가한다 리스트.append(값)
pop() 리스트 제일 뒤의 항목을 빼내고 삭제한다 리스트.pop()
sort() 리스트 항목을 정렬한다 리스트.sort()
reverse() 리스트 항목을 역순으로 정렬한다 리스트.reverse()
index() 지정한 값을 찾아 위치를 반환한다 리스트.index(찾을값)
insert() 지정한 위치에 값을 삽입한다 리스트.insert(위치,값)
remove() 지정한 값을 삭제한다(여러 개면 첫 번째만) 리스트.remove(지울값)
extend() 리스트 뒤에 리스트를 추가한다 리스트.extend(추가할리스트)
count() 리스트에서 찾을 값의 개수를 센다 리스트.count(찾을값)
clear() 리스트의 내용을 모두 지운다([]만 남음) 리스트.clear()
del() 리스트에서 해당 위치의 항목을 삭제한다 del(리스트[위치])
len() 리스트에 포함된 전체 항목의 개수를 센다 len(리스트)
copy() 리스트의 내용을 새로운 리스트에 복사한다 새로운리스트 = 리스트명.copy()
sorted() 리스트의 항목을 정렬해서 새로운 리스트에 대입한다 새로운리스트 = sorted(리스트)

 

  • 컴프리헨션: 순차적인 리스트를 간단히 만들 수 있음
numList = [num for num in range(1,21) if num % 3 == 0]
# 리스트 = [수식 for 항목 in range() if 조건식]

 

 

  • zip() 함수: 동시에 여러 리스트에 접근 가능
foods = ['떡볶이', '짜장명', '라면', '피자', '맥주', '치킨', '삼겹살']
sides = ['오뎅', '단무지', '김치']

for food, side in zip(foods, sides) :
	print(food, '-->', side)
    
'''
결과값:
떡볶이 --> 오뎅
짜장면 --> 단무지
라면 --> 김치
'''

 

  • 리스트의 복사
newList = oldList  # 얕은 복사: 동일한 메모리 공간을 공유하게 됨

newList = oldList[:] # 깊은 복사: 메모리의 공간을 복사해서 새로 만듦
newList = oldList.copy() #도 가능

 

 


튜플

튜플의 값은 수정할 수 없으며, 읽기만 가능

소괄호 생략 가능 but 항목이 하나일 때에는 뒤에 쉼표(,)를 붙여야 함

tt1 = (10, 20, 30);
tt2 = 30, 40, 50;
tt3 = 10,
tt4 = (10,)

del(tt1[0])  # 에러 발생
del(tt1)  # 튜플 자체 삭제는 가능

tt1 + tt2  # (10, 20, 30, 40, 50, 60)
tt1[0:2]  # (10, 20)

 

  • 튜플, 리스트 서로 변환 가능: tuple(), list()
myTyple = (10, 20, 30)
myList = list(myTuple)
myList.append(40)
myTuple = tuple(myList)
myTuple  # (10, 20, 30, 40)

딕셔너리

{Key:Value} 쌍으로 구성. 키는 유일해야 함

순서가 없음

student1 = {'학번':1000, '이름':'홍길동', '학과':'컴퓨터학과'}
student1['연락처'] = '010-1111-2222'
del(student1['학과'])
student1  # {'학번':1000, '이름':'홍길동', '연락처':"010-1111-2222"}

student1['이름']  # '홍길동' //없는 키를 요청하면 오류
student1.get('이름')  # '홍길동'  //없는 키를 요청하면 아무것도 반환 x

# Key 값만
student1.keys()  # dict_keys(['학번', '이름', '학과'])
list(student1.keys())  # ['학번', '이름', '학과']

# Value 값만
student1.values()  # dict_values([1000, '홍길동', '컴퓨터학과'])

# .items() 함수를 이용해 튜플 형태로 구할 수 있음
student1.items()  # dict_items([('학번', 1000), ('이름', '홍길동'), ('학과', '컴퓨터학과')])

# in을 통해 딕셔너리 안에 특정 키값이 있는지 확인 가능
'이름' in student1  # True

 

  • 딕셔너리의 정렬
import operator

traninDic, trainList = {}, []

trainDic = {'Thomas':'토마스', 'Edward':'에드워드', 'Henry':'헨리', 'Gothen':'고든', 'James':'제임스'}
trainList = sorted(trainDic.items(), key = operator.itemgetter(0)) # 0은 키, 1은 값 기준 정렬

print(trainList)
# [('Edward':'에드워드'), ('Gothen':'고든'), ('Henry':'헨리'), ('James':'제임스'), ('Thomas':'토마스')]

세트

키만 모아 놓은 딕셔너리의 특수한 형태

중복된 키는 자동으로 하나만 남음, 순서 없음

set() 함수를 통해 세트로 변경 가능

 

  • 두 세트 사이의 교집합, 합집합, 차집합, 대칭 차집합
mySet1 = {1, 2, 3, 4, 5}
mySet2 = {4, 5, 6, 7}

mySet1 & mySet2 #교집합 {4, 5}
mySet1 | mySet2 #합집합 {1, 2, 3, 4, 5, 6, 7}
mySet1 - mySet2 #차집합 {1, 2, 3}
mySet1 ^ mySet2 #대칭 차집합 {1, 2, 3, 6, 7}

 

'프로그래밍 언어 > Python' 카테고리의 다른 글

함수와 모듈  (0) 2023.09.15
문자열  (0) 2023.09.15
반복문  (0) 2023.09.15
조건문  (0) 2023.09.15
연산자  (0) 2023.09.15