개발자 끄적끄적

파이썬 기초(데이터형, 리스트, 딕셔너리, 슬라이싱) 본문

데이터 마이닝

파이썬 기초(데이터형, 리스트, 딕셔너리, 슬라이싱)

햏치 2023. 3. 6. 13:43

<아나콘다(Spyder) 실행>
>python --version #아나콘다에 포함되어 있는 파이썬의 버전 확인
>conda --version #아나콘다 버전 확인
>conda update -n base conda #콘다 자체 업그레이드
> conda update --all #설치된 파이썬 팩키지를 모두 최신으로 업데이트



<Python 기초>
- 기본 데이터형 : 정수형, 실수형, 불형(True or False), 문자열, 리스트(배열+구조체)
                      튜플(읽기만 가능한 리스트), 딕셔너리(사전, Map, HashTable), 집합 등
- Python에서 
1) 자료형 #type을 이용하면 자료형을 볼 수 있다
>>>type(10)  
<class 'int'>

>>type(2.718)
<class 'float'>

>>>type("hello")
<class 'str'>

2) 변수 선언(메모리 할당을 받는다) #변수 선언할 때 자료형을 명시하지 않는다
>>>x=100 #변수에 값 대입
>>>print(x)
100

>>>y=3.14
>>>x*y

- Spyder에서
print(x*y)
print(type(2.718))



<리스트> - 여러 데이터를 하나의 변수 아래 묶을 수 있다, 인덱스 번호로 0,1,2, ... 순으로 값을 저장한다
- C/C++나 자바 같은 프로그래밍 언어에는 리스트가 없다
  리스트와 비슷한 개념인 배열(Array)를 사용한다. 리스트는 정수, 문자열, 실수 등 '서로 다른 데이터형'도 하나로 묶을 수 있지만
  배열은 동일한 데이터형만 묶을 수 있다. 정수 배열은 정수로만 묶어서 사용한다

>>>a=[1,2,3,4,5] #리스트 생성

>>>print(a) #리스트의 내용 출력
[1,2,3,4,5]

>>>len(a)  #리스트의 길이 출력
5

>>>a[0] #첫 원소에 접근
1

>>>a[4] #다섯 번째 원소에 접근
5

>>>a[4]=99 #값 대입
>>>print(a)
[1,2,3,4,99]



<슬라이싱> - 리스트 중 일부만 사용하도록
a=[1,2,3,4,99]
a[0:2] #인덱스 0부터 2까지(2는 포함되지 않는다)_
[1,2]

>>>a[1:] #인덱스 1부터 끝까지 얻기
[2,3,4,99]

>>>a[:3] #처음부터 인덱스 3까지 얻기(3번째는 포함하지 않는다)
[1,2,3]

>>>a[:-1] #처음부터 마지막 원소의 1개 앞까지 얻기
[1,2,3,4,]

>>>a[:-2]
[1,2,3]




<리스트 조작 함수>
- 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(리스트) 

*리스트.sort()는 리스트 자체 정렬, 'sorted(리스트)'는 리스트는 그대로 두고 정렬된 결과만 반환




<딕셔너리>
- 여러 정보의 딕셔너리를 표현할 때 유용하다
- 키(Key)와 값(Value)으로 한 쌍으로 저장한다
- 다른 프로그래밍 언어에서는 해시 테이블(Hash table), 맵(Map)이라고 한다
- 중괄호{ }로 묶어 구성, 키(Key)와 값(Value)의 쌍으로 구성한다
ex) 딕셔너리 변수 = {키1:값1, 키2:값2, 키3:값3, ...}


>>>me = {'height' : 180} #딕셔너리 생성
>>>me{'height'} #원소에 접근
180

>>>me={'weight'} = 70 #새 원소 추가
>>>print(me)
{'weight':70, 'height':180}



<딕셔너리의 생성>
dic1 = {1:'a', 2:'b', 3:'c'}
dic1
{1:'a', 2:'b', 3:'c'}

키와 값을 반대로
dic2 = {'a':1, 'b':2, 'c':3}
dic2
{'a':1, 'b':2, 'c':3}

- 키와 값은 사용자가 지정하는 것이지 규정은 없다
- 주의할 점 : 딕셔너리에는 순서가 없어 생성한 순서대로 딕셔너리가 구성되어 있다는 보장이 없다



<딕셔너리의 사용>
- 키로 값에 접근하는 코드
student1['학번']
student1['이름']
student1['학과']

2000
'홍길동'
'파이썬 학과'

- 딕셔너리명.keys()는 모든 딕셔너리의 모든 키 반환
student1.keys()

dic_keys(['학번', '이름', '학과'])

- 딕셔너리명.values()함수는 딕셔너리의 모든 값을 리스트로 만들어서 반환
  - 딕셔너리명.values() 함수도 출력 결과의 dic_values가보지 싫으면 list(딕셔너리명.values()) 함수 사용
student1.values()

dict_values([2000, '홍길동', '파이썬학과'])

- 딕셔너리 안에 해당 키가 있는지 없는지는 in을 사용해 확인

  - 딕셔너리에 키가 있다면 True를 반환하고, 없다면 False를 반환
'이름' in student1 -> True
'주소' in student1 -> False



ex) for문을 활용해 딕셔너리의 모든 값을 출력하는 코드
singer = {} #빈 딕셔너리를 준비

singer['이름'] = '트와이스'
singer['구성원수'] = 9
singer['데뷔'] = '서바이벌 식스틴'
singer['대표곡'] = 'SIGNAL'

for k in singer.keys() :  #반복을 나타내주는 값 singer.keys()
  print('%s --> %s' % (k, singer[k])



<자료형 Bool>
>>>hungery = True #배가 고프다
>>>sleepy = False #졸리지 않다

>>>type(hungry)
  <class 'bool'>

  >>>not hungry
  False

  >>>hungry and sleepy
  False

  >>>hungry or sleepy
  True