리스트
1. 선언, 입력
변수명 = [] or list()
변수명 = [데이터1, 데이터2, ...]
2. 읽기
변수명[인덱스번호]
3. 추가
변수명.append(데이터)
변수명.insert(인덱스번호, 데이터)
4. 삭제
변수명.remove(데이터)
del 변수명[인덱스번호]
5. 수정
변수명[인덱스번호] = 수정할값
▷ 관련 함수들
append(): 요소 추가
a = [1,2,3]
a.append(4)
a
>> [1,2,3,4]
sort() / sorted(): 리스트 정렬
- sort, sorted 모두 key, reverse 매개변수를 갖고 있다.
- reverse에는 bool값을 넣고, 디폴트는 reverse=False(오름차순)이다.
- key에는 정렬을 목적으로 하는 함수를 넣을 수 있고, lambda를 자주 이용한다.
#sort(): 반환대신 원형변형
a = [1,4,3,2]
sa = a.sort() #사용x
print(a) //[1,2,3,4]
print(sa) // None
#sorted: 정렬된 배열반환
sa2 = sorted(a)
print(a) //[1,4,3,2]
print(sa) //[1,2,3,4]
#2차원 배열 sort
array = [[50, "apple"], [30, "banana"] , [400, "melon"]]
array.sort(key = lambda x:x[0]) #숫자기준 오름차순
array.sort(key = lambda x:x[1]) #문자열기준 오름차순
array.sort(key = lambda x:(x[0],-x[1])) #숫자기준 오름차순, 문자열기준 내림차순
array.sort() #0번째기준 오름차순, 1번째기준 오름차순
reverse() / reversed(): 리스트 뒤집기
a = ['a','c','b']
ra = a.reverse()
print(a) //['b','c','a']
print(ra) // None
ra2 = sorted(a)
print(a) //['a','c','b']
print(ra2) //['b','c','a']
find(): 문자 위치 반환
→ 발견된 문자열의 첫번째 위치를 반환하고, 검색하는 문자열이 없을 때는 -1을 반환한다.
s = "python is fun"
c = "n"
print(s.find(c))
>> 5
index(): 문자 위치 반환
→ find와는 달리 문자를 찾지 못할 경우 예외를 발생시킨다.
a = [1,2,3]
a.index(3)
>> 2
insert(): 요소 삽입
a = [1,2,3]
a.insert(0,4)
a
>> [4,1,2,3]
remove(): 요소 제거
→ 리스트에서 첫번째로 나오는 x를 삭제
a = [1,2,3,1,2,3]
a.remove(3)
a
>> [1,2,1,2,3]
pop(): 요소 꺼내기
a = [1,2,3]
a.pop()
>> 3
a
>> [1,2]
count(): 요소 개수 반환
a = [1,2,3,1]
a.count(1)
>> 2
extend(): 리스트 확장
a = [1,2,3]
a.extend([4,5])
a
>> [1,2,3,4,5]
튜플
1. 선언, 입력
변수명 = () or tuple()
변수명 = (1,2,3,4)
2. 읽기
변수명[인덱스번호]
3. 추가: 불가
4. 삭제: 불가
5. 수정: 불가
tuple끼리 더하거나 곱하는 것은 가능
- 튜플의 값을 변경하려면 리스트로 변환한 후 변경 후 다시 튜플로 변환
- 튜플은 몇 가지를 제외하곤 리스트와 거의 비슷하며 다른 점은 다음과 같다.
- 리스트는 []으로 둘러싸지만, 튜플은 ()로 둘러싼다.
- 리스트는 값의 생성, 삭제, 수정이 가능하지만 튜플은 불가능하다.
t1 = ()
t2 = (1,) # 1개의 요소는 요소 뒤에 콤마를 붙여야함
t3 = (1,2,3)
t4 = 1,2,3 # 괄호 생략 가능
t5 = ('a','b',('ab','cd'))
▷ 관련 함수들
인덱싱
t1 = (1,2,'a','b')
t1[0]
>> 1
t1[3]
>> 'b'
슬라이싱
t1 = (1,2,'a','b')
t1[1:]
>> (2,'a','b')
튜플 더하기
t1 = (1,2,'a','b')
t2 = (3,4)
t1 + t2
>> (1,2,'a','b',3,4)
튜플 곱하기
t2 = (3,4)
t2*3
>> (3,4,3,4,3,4)
튜플 길이 구하기
t1 = (1,2,'a','b')
len(t1)
>> 4
딕셔너리
1. 선언, 입력
변수명 = {} or dict()
변수명 = {키:값, 키:값 ...}
2. 읽기
변수명[키]
3. 추가
변수명[새로운키] = 새로운값
4. 삭제
del 변수명[삭제할키]
5. 수정
변수명[수정할키] = 수정할값
- 대응 관계를 나타내는 자료형 ex) '이름' = '홍길동'
- key에는 변하지 않는 값을 사용하고, value에는 변하는 값/변하지 않는 값 모두 사용할 수 있다.
- 딕셔너리는 리스트나 튜플처럼 순차적으로 해당 요소값을 구하지 않고, key를 통해 value를 얻는다.
- 딕셔너리 객체 간의 +,* 연산은 허용되지 않는다.
▷ 관련 함수들
추가
- 새로운 key에 value를 지정하면 바로 딕셔너리에 추가된다.
- a[1]에서 숫자 1은 첫번째 요소가 아닌 key 값을 의미
a['name'] = 'pey'
a[3] = [1,2,3]
a
>> {1:'a', 2:'b', 'name':'pey', 3:[1,2,3]}
삭제
- del 함수를 사용하면 지정한 key에 해당하는 key: value 쌍이 삭제된다.
del a[1] //a.pop(1)도 가능
a
>> {2:'b', 'name':'pey', 3:[1,2,3]}
keys(): key만 구하기
a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
a.keys()
>> dict_keys(['name', 'phone', 'birth'])
- a.keys()는 딕셔너리 a의 key만 모아서 dict_keys 객체를 돌려준다.
- dict_keys 객체는 리스트 고유의 append, insert, pop, remove, sort 함수는 수행할 수 없다.
다음과 같이 dict_keys 객체를 리스트로 변환할 수 있다.
list(a.keys())
>> ['name', 'phone', 'birth']
values: value만 구하기
a.values()
>> dict_values(['pey', '0119993323', '1118'])
items(): (key,value) 쌍들 얻기
a.items()
>> dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])
- items 함수는 key, value 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다.
get(): key로 value 얻기
a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
a.get('name')
>> 'pey'
- get(x) 함수는 x라는 key에 대응되는 value를 돌려준다.
- a.get('name')과 a['name']은 동일한 결과값을 리턴한다.
in(): 해당 key가 딕셔너리 안에 있는지 조사
a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
'name' in a
>> True
'email' in a
>> False
sorted(): sort()가 없으므로 sorted()를 사용해야 함
dic = {
2: 1,
3: 4,
5: 2,
1: 3,
4: 1
}
x = sorted(dic.items(), key=lambda x:x[0])
print(x)
# [(1, 3), (2, 1), (3, 4), (4, 1), (5, 2)]
집합
1. 선언, 입력
변수명 = set()
변수명 = {데이터1, 데이터2, 데이터3 ...}
변수명 = set('apple')
- 자료의 중복을 제거하기 위한 필터 역할을 함
- 집합 연산을 쉽게 할 수 있음
- 순서없음, 중복없음
- 리스트, 튜플은 인덱싱을 통해 값을 얻을 수 있지만, set은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다. (=딕셔너리)
set 자료형을 유용하게 사용하는 경우는 다음 경우이다.
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
교집합
s1 & s2
s1.intersection(s2)
>> {4,5,6}
합집합
s1 | s2
s1.union(s2)
>> {1,2,3,4,5,6,7,8,9}
차집합
s1 - s2
s1.difference(s2)
>> {1,2,3}
집합이 같은지
s1 = set([1, 2, 3, 4, 5])
s2 = set([4, 5, 6, 7, 8])
s3 = {1, 2, 3, 4, 5}
if s1 == s2:
print("s1과 s2은 같습니다.")
else:
print("s1과 s2은 다릅니다.")
if s1 == s3:
print("s1과 s3은 같습니다.")
else:
print("s1과 s3은 다릅니다.")
▷ 관련 함수들
add(): 값 1개 추가
s1 = set([1,2,3])
s1.add(4)
s1
>> {1,2,3,4}
update(): 값 여러개 추가
s1 = set([1,2,3])
s1.update([4,5,6])
s1
>> {1,2,3,4,5,6}
remove(): 원소 삭제
s1 = set([1,2,3])
s1.remove(2)
s1
>> {1,3}
discard(): 원소 삭제
remove와 차이점은 제거하려는 원소가 없어도 에러가 발생하지 않는다.
a = {1,2,3}
a.discard(2)
a
>> {1,3}
'Python > 개념' 카테고리의 다른 글
파이썬의 self (0) | 2023.04.07 |
---|---|
기초100제 문법 (0) | 2023.01.09 |
투 포인터 (0) | 2022.09.20 |
파이썬 라이브러리 (0) | 2022.09.11 |
문자열 (0) | 2022.09.06 |