[03] 파이썬 프로그래밍의 기초, 자료형 2
목차
리스트 자료형
리스트 인덱싱, 슬라이싱
리스트는 a=[a,b,c], 문자열은 a =‘abc ’ 다 같음
>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]
>>> a[2][2][0]
'Life'
>>> a = [1, 2, 3, 4, 5]
>>> b = a[:2]
>>> b
[1, 2]
>>> a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]
>>> a[3][:2]
['a', 'b']
리스트 연산하기
더하기 (+), 반복하기 (*), 길이 구하기 (len(a))
- [정수, 실수] + “문자열” 정수와 문자열 연산 안됨 Str(a[숫자])로 숫자를 문자열 형태로 변환
>>> a = [1, 2, 3] >>> str(a[2]) + "hi"
리스트의 수정과 삭제
리스트는 수정, 삭제 가능!!! (a[ 위치 ]=수정 후, del a[ ])
>>> a = [1, 2, 3]
>>> a[2] = 4
>>> a
[1, 2, 4]
>>> a = [1, 2, 3]
>>> del a[1] -> del 객체
>>> a
[1, 3]
리스트 관련 함수
문자열과 마찬가지로 리스트 변수 이름 뒤에 ‘.’를 붙여
1.리스트에 요소 추가
리스트 이름.append
(추가할 것)
리스트의 맨 마지막에 추가, 어떤 자료형도 가능
2.리스트 정렬
리스트 이름.sort()
/숫자 알파벳 가능
>>> a = [1, 4, 3, 2]
>>> a.sort( )
>>> a
[1, 2, 3, 4]
3.리스트 뒤집기
리스트 이름.reverse()
/ 위와 같음
4.위치 알려주기
리스트 이름.index()
/ 없으면 오류
5.리스트에 요소 삽입
리스트 이름.insert(삽입 위치, 삽입함수)
>>> a = [1, 2, 3]
>>> a.insert(0, 4)
[4, 1, 2, 3]
6.리스트 요소 제거
리스트 이름.remove(지울 문자)
첫번째로 나오는 지울 문자 삭제 2개이면 2번 입력해!
>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3)
[1, 2, 1, 2, 3]
7.리스트 요소 끄집어내기
리스트 이름.pop()
-> 맨 마지막요소 돌려주고 삭제
리스트 이름.pop(지울요소)
>>> a = [1, 2, 3]
>>> a.pop( )
3
>>> a
[1, 2]
8.리스트 속의 개수 세기
리스트 이름.count(세고 싶은 요소)
9.리스트 확장
리스트 이름.extend()
/ 뒤에 추가
할당 연산자 a+=[ ]과 동일 i += 1은 i = i + 1
>>> a = [1, 2, 3]
>>> a.extend([4, 5])
>>> a
[1, 2, 3, 4, 5]
튜플 자료형
리스트와 거의 비슷
- 리스트는 [ ]으로 둘러싸지만 튜플은 ( )으로 둘러싼다.
- 리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 그 값을 바꿀 수 없다.
-> 프로그램이 실행되는 동안 그 값이 항상 변하지 않기를 바랄 때 사용>>> t1 = ( ) >>> t2 = (1,) 1개만 일 때 콤마(,)를 반드시 >>> t3 = (1, 2, 3) >>> t4 = 1, 2, 3 괄호( )를 생략해도 무방 >>> t5 = ('a', 'b', ('ab', 'cd'))
빨간색- 리스트와 차이점
>>> t1 = (1, 2, 'a', 'b') >>> del t1[0]->리스트와 달리 오류 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object doesn't support item deletion
튜플 다루기
리스트와 같음
1.인덱싱하기
>>> t1 = (1, 2, 'a', 'b')
>>> t1[위치]
2.슬라이싱하기
>>> t1[1:]
3.튜플 더하기
>>> t1 + t2
4.튜플 곱하기
>>> t2 * 3
5.튜플 길이 구하기
>>> len(t1)
딕셔너리 자료형
딕셔너리는 Key와 Value를 한 쌍으로 갖는 자료형 (‘이름’ = ‘홍길동)
이러한 대응 관계->연관 배열(Associative array) 또는 해시(Hash)
리스트나 튜플- 순차적으로 해당 요솟값구함, 찾기 위해 사전의 내용을 순차적으로 모두 검색
딕셔너리- Key를 통해 Value 얻음, 해당 단어가 있는 곳만 펼침
딕셔너리 만드는 법 {}
{Key1:Value1, Key2:Value2, Key3:Value3, …}
>>> dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
Key: 변하지 않는 값, 리스트 X
Value : 변하는 값과 변하지 않는 값, 리스트 모두 가능
1.딕셔너리 쌍 추가
딕셔너리이름[‘Key’]= ‘Value’
>>> a['name'] = 'pey'
>>> a
{1: 'a', 2: 'b', 'name': 'pey'}
{'name':'pey'} 쌍 추가
2.딕셔너리 요소 삭제
Del 딕셔너리이름[‘key’]
>>> del a[1]
>>> a
{'name': 'pey', 3: [1, 2, 3], 2: 'b'} -> key가 1인 key:value 쌍 삭제
+주의___ Key는 고유한 값, 즉 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다
>>> a = {1:'a', 1:'b'} -> 1이라는 Key 값이 중복으로 사용
>>> a
{1: 'b'} -> 1:’a’ 쌍이 무시됨
딕셔너리 관련 함수
딕셔너리가 자체적으로 가지고 있는 관련 함수
1. Key 리스트 만들기
딕셔너리 이름.keys(공백)
>>> a = {'name': 'pey', 'phone': '0119993323', 'birth':'1118'}
>>> a.keys( )
dict_keys(['name', 'phone', 'birth'])
반복문 이용
for 아무문자 in 딕셔너리 이름.keys(공백)
>>> for k in a.keys( ):
... print(k)
...
name
phone
birth
dict_keys 를 리스트로 변환
list(딕셔너리 이름.keys(공백))
>>> list(a.keys( ))
['name', 'phone', 'birth']
2. Value 리스트 만들기
딕셔너리 이름.value(공백)
>>> a.values( )
dict_values(['pey', '0119993323', '1118'])
3. Key, Value 쌍 얻기
딕셔너리 이름.item(공백)
>>> a.items( )
dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])
4. Key: Value 쌍 모두 지우기
딕셔너리 이름.clear(공백)
>>> a.clear( )
>>> a
{}
5. Key로 Value 얻기
딕셔너리 이름.get(‘key’)
> print(딕셔너리 이름.get(‘key’)) 존재X:None(거짓)
> Key 값이 없을 경우 미리 정해 둔 디폴트 값을 대신출력
get(‘key’, '디폴트 값')
print(딕셔너리 이름.get(‘key’)) 존재X:오류
```python
>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> a.get('name')
'pey'
>>> print(a.get('nokey'))
None
>>> print(a['nokey'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'nokey'
>>> a.get('foo', 'bar')
'bar'
6.해당 Key가 딕셔너리 안에 있는지 조사하기
‘key’ in 딕셔너리 이름
>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> 'name' in a
True
>>> 'email' in a
False
집합자료형
만드는 법
- 중복을 허용하지 않는다.(중복제거 필터로 이용가능)
- 순서가 없다(Unordered).(= 딕셔너리)_ 인덱싱 지언 안함 -set(리스트 or 문자열 or 공백) -교집합, 합집합, 차집합 구할 때 유용
>>> s1 = set([1,2,3]) >>> s1 {1, 2, 3} >>> s2 = set("Hello") >>> s2 {'e', 'H', 'l', 'o'}
안덱싱으로 접근하려면 리스트나 튜플로 전환
>>> s1 = set([1,2,3]) >>> l1 = list(s1) -> 리스트로 변환 >>> l1 [1, 2, 3] >>> l1[0] 1 >>> t1 = tuple(s1) -> 튜플로 변환 >>> t1 (1, 2, 3) >>> t1[0] 1
교집합, 합집합, 차집합 구하기
- 교집합 s1 & s2 or s1.intersection(s2)
- 합집합 s1 | s2 or s1.union(s20
- 차집합 s1 - s2 or s1.difference(s2)
집합 자료형 관련 함수
1.값 1개 추가하기
집합 이름.add(추가 문자)
>>> s1 = set([1, 2, 3])
>>> s1.add(4)
>>> s1
{1, 2, 3, 4}
2.값 여러 개 추가하기
```python
>>> s1 = set([1, 2, 3])
>>> s1.update([4, 5, 6])
>>> s1
{1, 2, 3, 4, 5, 6}
3.특정 값 제거하기
```python
>>> s1 = set([1, 2, 3])
>>> s1.remove(2)
>>> s1
{1, 3}
불자료형
만드는 법
-불(bool) 자료형이란 참(True)과 거짓(False) 값만 갖음
>>> a = True
>>> b = False ->이렇게 지정해 두면
>>> type(a)
<class 'bool'>
>>> type(b)
<class 'bool'>
type(x)는 x의 자료형을 확인하는 파이썬의 내장 함수이다
조건문의 반환값으로도 사용 가능
>>> 1 == 1
True
자료형의 참과 거짓
>>> if []: -> 만약 [ ]가 참이면
... print("참") ->‘참’ 문자열 출력
... else: -> 만약 [ ]가 거짓이면
... print("거짓") ->거짓’ 문자열 출력
...
거짓
불 연산
bool() -> 참과 거짓 출력 가능
>>> bool([1,2,3])
True
>>> bool([])
False