반응형

본 내용은  fastcampus 딥러닝/인공지능 올인원 패키지 online을 정리한 것이다.

자료형이란 프로그래밍을 할 때 쓰이는 숫자 , 문자열, 등 자료 형태로 사용하는 모든 것을 뜻한다. 

프로그램의 기본이자 핵심 단위가 바로 자료형이다.

 

02-1 숫자형

숫자 형태로 이루어진 자료형

정수 : 양의 정수와 음의 정수 , 0

실수 : floating-point 소수점이 포함된 숫자

 a = 4.24E10 => 지수표현 방식

8진수 : Octal => Oo

16진수 : Hexadecimal => Ox

 

숫자형을 활용하기 위한 연산자

사칙연산 +,-,*,/

 ** =>제곱

 % 나눗셈 후 나머지를 반환하는 연산자

 // 나눗셈 후 몫을 반환하는 연산자

 

 

02-2 문자열 자료형

"

'

"""

'''

 

문자열 연산하기

1. 문자열 더해서 연결하기

2. 문자열 곱하기

a = "python"

a * 2

'pythonpython'

3. 문자열 곱하기 응용

4. 문자열 길이 구하기

len(a)

 

문자열 인덱싱과 슬라이싱

a[3]

파이썬은 0부터 숫자를 센다.

0과 -0은 똑같은 것이기 때문에 a[-0]은 a[0]과 똑같은 값을 보여준다.

 

문자열 슬라이싱이란?

a[0:3]

a[시작번호: 끝번호]

 

문자열 포매팅 

문자열 안의 특정한 값을 바꿔야 할 경우가 있을 때 이것을 가능하게 해주는 것이 바로 문자열 포매팅 기법이다.

 

문자열 포매팅 따라 하기

1. 숫자 바로 대입

"I eat %d apples." % 3

2. 문자열 바로 대입

"I eat %s apples." % "five"

3,숫자값을 나타내는 변수로 대립

number = 3

"I eat %d apples." % number

4. 2개 이상의 값 넣기

number = 10

day = "three"

"I ate %d apples. so I was sick for %s days." % (number,day)

 

포맷코드와 숫자 함께 사용하기

1. 정렬과 공백

"%10s" % "hi" <- hi 오른쪽 정렬

"%-10s" % "hi" <- hi 왼쪽 정렬

 

2. 소수점 표현하기

"%0.4f" % 3.421334556

 

format함수를 사용한 포매팅

숫자 바로 대입하기

"I eat {0} apples".format(3)

2개 이상의 값 넣기

number= 10

day ="three"

"I eat {0} apples. so I was sick for {1} days.".format(number, day)

 

 

"{0:<10}".format("hi") 왼쪽 정렬

"{0:>10}".format("hi") 오른쪽 정렬

"{0:^10}".format("hi") 가운데 정렬

공백 채우기 "{0:=^10".format("hi")

 

소수점 표현하기

"{0:0.4f}".format(y)

 

f문자열 포매팅

f'나의 이름은 {name}입니다 . 나이는 {age}입니다.'

 

문자열 관련 함수

문자 개수 세기(count)

위치 알려주기 1(find)

위치 알려주기 2(index)

문자열 삽입(join)

소문자를 대문자로 바꾸기(upper)

대문자를 소문자로 바꾸기(lower)

왼쪽 공백 비우기(lstrip)

오른쪽 공백 지우기(rstrip)

양쪽 공백 지우기(strip)

문자열 바꾸기(replace)

문자열 나누기(split)

 

 

02-3 리스트 자료형

odd = []

 

리스트의 인덱싱과 슬라이싱

a[0]

a[-1]

 

리스트의 슬라이싱

a[0:2]

 

리스트 연산하기

1. 리스트 더하기 +

2. 리스트 반복하기 *

3. 리스트 길이 구하기 len()

 

리스트의 수정과 삭제

리스트에서 값 수정하기

a[2] = 4

del 함수 사용해 리스트 요소 삭제하기

del a[1]

del 객체

 

리스트 관련 함수

리스트에 요추 추가하기 append

리스트 정렬 sort()

리스트 뒤집기 reverse()

위치 반환 index(x)

리스트에 요소 삽입 insert

리스트 요소 제거 remove()

리스트 요소 끄집어 내기 pop()

리스트에 포함된 요소 x의 개수 세기 count()

리스트 확장 extend([4,5])

 

02-4 튜플 자료형

t1 = ()

immutable

 

1. 튜플 요솟값을 삭제하려 할 때

오류가 난다.

2. 튜플 요솟값을 변경하려 할 때 

오류가 난다.

 

튜플 다루기

1. 인덱싱 하기 t1[0]

2. 슬라이싱하기

3. 튜플 더하기

4. 튜플 곱하기

5. 튜플 길이 구하기

 

02-5  딕셔너리 자료형

Dictionary

{key1:value1,....}

 

딕셔너리 쌍 추가 , 삭제 하기 

1. 딕셔너리 쌍 추가하기 

a[1] = 'a'

2. 딕셔너리 요소 삭제하기

del a[1]

 

딕셔너리를 사용하는 방법

a[1]

 

딕셔너리 만들때 주의할 사항

key가 같은  value가 두개 있을 떄 마지막의 값으로 된다.

list를 key로 사용할 수 없다.

 

딕셔너리 관련 함수

key 리스트 만들기(keys)

a.keys() =>리스트를 돌려준다.

 

for k in a.keys():

  print(k)

 

list(a.keys())

 

value 리스트 만들기 

a.values()

 

key,value 쌍 얻기

a.items()

 

key : value 쌍 지우기 

a.clear()

 

key로 value얻기

a.get(1)

 

해당 key가 딕셔너리 안에 있는지 조사하기 (in)

 

02-6 집합 자료형

s1 = set([1,2,3])

중복을 허용 하지 않는다. 

순서가 없다.

 

교집합 , 차집합 구하기

교집합

s1&s2

s1.intersection(s2)

합집합 

s1|s2

s1.union(s2)

차집합

s1-s2

s2-s1

s1.difference(s2)

s2.difference(s1)

 

집합 자료형 관련 함수

s1.add(s4)

 

값 여러개 추가하기 (update)

s1.update([4,5,6])

 

특정 값 제거하기(remove)

s1.remove(2)

반응형
반응형

 

Python IDLE사용

 

2. 프로그래밍의 기초, 자료형

I. 숫자형(numeric)

II. 문자열(string) 자료형

=> 문자열은 1차열 배열이다.

III. 리스트(list) 자료형

=> Python에서 리스트는 숫자나 문자를 모아 놓은 것이다. 수정이 가능하다.

=> R에서 리스트는 2차원 배열이다.

IV. 튜플(tuple) 자료형

=> 튜플은 리스트하고 형태 같은데 수정이 불가하다.

V. 딕셔너리(dictionary) 자료형

=> 딕셔너리는 사전으로 생각하면 된다. key value

VI. 집합(set) 자료형

=> 집합은 특징은 중복이 되면 안되고 순서가 없다. 합집합 교집합 차집합 구할 경우

VII. (bool) 자료형

=> while문에서 자주 사용  참이나 거짓 이나 이런 것 등

VIII.자료형의 값을 저장하는 공간, 변수

=>자료형의 값을 저장하는 공간, 변수 변수를 대입하게 되면 메모리에 저장하게 된다.

 

I. 숫자형

**숫자형(Numeric)이란 숫자 형태로 이루어진 자료형

=>정수형(Integer)이란 정수를 뜻하는 자료형을 말함

>>> a = 123

>>> a = -178

>>> a = 0

=>실수형(Floating-point)은 소수점이 포함된 숫자를 말함

>>> a = 1.2

>>> a = -3.45

 

실수형의 소수점 표현 방식

>>> a = 4.24E10

>>> a = 4.24e-10#뛰여쓰기 없어야 함 아님 오류

컴퓨터식 지수 표현 방식

e E 둘 중 어느 것을 사용해도 무방함

3.4e10->지수를 표현한다.

10 10승등으로 이해하기 어려워서 e를 사용했다

 

=>8진수와 16진수

>>> a = 0o177

8진수(Octal)를 만들기 위해서는 숫자가 0o 또는 0O로 시작함

>>> 0o34 #8진수 34

 

>>> b = 0x5ff

>>> b = 0xABC

>>> 0x2A #16진수

16진수(Hexadecimal)를 만들기 위해서는 0x로 시작함

 

=> 숫자형을 활용하기 위한 연산자

==> 사칙연산(+, -, *, /)

>>> a = 3

>>> b = 4

>>> a + b

>>> a - b

>>> a * b

>>> a / b

==> 대입연산(+=, -=, *=, /=)

>>> a += 1

print(a)

 

=> x y제곱을 나타내는 연산자

>>> a = 3

>>> b = 4

>>> a ** b

=>나눗셈 후 나머지를 반환하는 % 연산자

아래 두 개는 페이지 처리 시 사용한다.

%는 나머지

//은 몫

>>> 7 % 3 #1

>>> 3 % 7 #3

나눗셈 후 몫을 반환하는 // 연산자

>>> 7 // 3

>>> 7 // 4

>>> 7/4  #1.75

 

II. 문자열 자료형

문자열(String)이란 문자, 단어 등으로 구성된 문자들의 집합을 의미

=>문자열 자료형 만드는 4가지 방법

1. 큰따옴표(“)로 양쪽 둘러싸기

>>> "Hello World"

2. 작은따옴표(‘)로 양쪽 둘러싸기

>>> 'python is fun'

3. 큰따옴표 3개를 연속(“””)으로 써서 양쪽 둘러싸기

>>> """Life is too short,You need python"""

4. 작은따옴표 3개를 연속(‘’’)으로 써서 양쪽 둘러싸기

>>> '''Life is too short, You need python'''

=>문자열에 따옴표 포함시키기

1. 문자열에 작은따옴표(‘) 포함시키기

>>> food = "Python's favorite food is perl"

>>> food

큰따옴표(“)가 아닌 작은따옴표(‘)로 문자열을 둘러싼 후 다시 실행함

‘Python’이 문자열로 인식되어 구문 오류(Syntax Error)가 발생함

>>> food = 'Python's favorite food is perl'#오류

2. 문자열에 큰따옴표(“) 포함시키기

>>> say = '"Python is very easy." he says.'

>>> say

3. 백슬래시(\)를 이용해서 작은따옴표(‘)와 큰따옴표(“)를 문자열에 포함시키기

백슬래시(\)를 작은따옴표(‘)나 큰따옴표(“) 앞에 삽입하면 백슬래시(\) 뒤의 작은따옴표(‘)나 큰따옴표(“)는 문자열을 둘러싸는 기호의 의미가 아니라 (‘), (“) 그 자체를 의미함

>>> food = 'Python\'s favorite food is perl'

>>> say = "\"Python is very easy.\" he says."

=> 여러 줄인 문자열을 변수에 대입하고 싶을 때

1. 줄을 바꾸는 이스케이프 코드 ‘\n’ 삽입하기

>>> multiline = "Life is too short\nYou need python"

>>> multiline

[이스케이프 코드]

프로그래밍할 때 사용할 수 있도록 미리 정의해 둔문자 조합이며, 출력물을 보기 좋게 정렬해 줌

코드

설명

\n

문자열 안에서 줄을 바꿀 때 사용

\t

문자열 사이에 탭 간격을 줄 때 사용

\\

문자 \를 그대로 표현할 때 사용

\’

작은따옴표(‘)를 그대로 표현할 때 사용

\”

큰따옴표(“)를 그대로 표현할 때 사용

\r

캐리지 리턴(줄 바꿈 문자,현재 커서를 다음 줄로 이동)

\a

벨 소리(출력할 때 pc 스피커에서 '' 소리가 난다)

\b

백스페이스

\000

널 문자

 

2. 연속된 작은따옴표 3(‘’’) 또는 큰따옴표 3(“””) 이용

>>> multiline = """

Life is too short

You need python

"""

multiline

=> 문자열 연산하기

1. 문자열 더해서 연결하기

>>> head = "Python"

>>> tail = " is fun!"

>>> head + tail

2. 문자열 곱하기

>>> a = "python"

>>> a*2

3. 문자열 곱하기 응용

#multistring.py

>>> print("="* 50)

>>> print("My Program")

>>> print("=" * 50)

4. 문자열 길이 구하기

>>> a = "Life is too short"

>>> len(a)

=> 문자열 인덱싱과 슬라이싱

인덱싱(Indexing)이란 무엇인가를 가리킨다는 의미이고, 슬라이싱(Slicing)은 무엇인가를 잘라낸다는 의미임

==> 문자열 인덱싱이란?

***파이썬은 0부터 숫자를 셈

>>> a = "Life is too short, You need Python"

>>> a[3]

>>> a[0]

>>> a[12]

*** a[-1]은 문자열을 뒤에서부터 읽기 위해서 마이너스(-)를 붙임

>>> a[-1]

*** a[-0] a[0]과 똑같은 값을 보여줌

>>> a[-0]  #0 0은 같다.

>>> a[-2]

>>> a[-5]

==>문자열 슬라이싱이란?

>>> a = "Life is too short, You need Python"

>>> b = a[0] + a[1] + a[2] + a[3]

>>> b

>>> a[0:4]

a[:]

a[시작 번호:끝 번호]에서 시작 번호와 끝 번호를 생략하면 처음부터 끝까지 뽑아냄

0 <= a < 4

==> 문자열을 슬라이싱하는 방법

>>> a[0:5]

>>> a[0:4]

>>> a[0:5]

>>> a[0:2]

>>> a[5:7]

>>> a[12:17]

>>> a[19:]

a[시작 번호:끝 번호]에서 끝 번호 부분을 생략하면 시작 번호부터 그 문자열의 끝까지 뽑아냄

>>> a[:17]

a[시작 번호:끝 번호]에서 시작 번호 부분을 생략하면 처음부터 끝 번호까지 뽑아냄

>>> a[:]

a[시작 번호:끝 번호]에서 시작 번호와 끝 번호를 생략하면 처음부터 끝까지 뽑아냄

a[19:-7]

a[-7]은 포함하지 않음

=> 슬라이싱으로 문자열 나누기

>>> a = "20010331Rainy"

>>> date = a[:8]

>>> weather = a[8:]

>>> date

>>> weather

>>> year = a[:4]

>>> day = a[4:8]

>>> year

>>> day

=> 문자열 바꾸기

>>> a = "Pithon"

>>> a[1]

>>> a[1] = 'y'

>>> a = 'Pithon'

>>> a[:1]

>>> a[2:]

>>> a[:1]+'y' +a[2:]

=> 문자열 포매팅

==> 문자열 포매팅 따라하기

1. 숫자 바로 대입

>>> "I eat %d apples." % 3

 

2. 문자열 바로 대입

>>> "I eat %s apples." % "five"

3. 숫자 값을 나타내는 변수로 대입

>>> number = 3

>>> "I eat %d apples." % number

 

4. 2개 이상의 값 넣기

변수를 대입한다.

>>> number = 10

>>> day = "three"

>>> "I ate %d apples. so I was sick for %s days." % (number,day)

포맷한다 .대입한다.

 

숫자 %d

 

마지막 % 다음 괄호 안에 콤마(,)로 구분하여 각각의 값을 넣어 주면 됨

 

==>문자열 포맷 코드

코드

내용

%s

문자열(String)

%c

문자 1(Character)

%d

정수(Integer)

%f

부동 소수(Floating-point)

%o

8진수

%x

16진수

%%

Literal %(문자 ‘%’ 자체)

%s 포맷 코드는 어떤 형태의 값이든 변환해서 넣을 수 있음

>>> "I eat %s apples." % 3

>>> "rate is %s" % 3.234

문자 %s

==> 포맷팅 연산자 %d %를 같이 쓸 때는 %%를 씀

>>> "Error is %d%." % 98

문자열 포맷팅 코드인 %d %가 문자열 내에 존재하는 경우, %를 나타내려면 반드시 %%로 써야함

>>> "Error is %d%%." % 98

==> 포맷 코드와 숫자 함께 사용하기

1. 정렬과 공백

>>> "%10s" % "hi"  #오른쪽

>>> "%-10s" % "hi"  #왼쪽

>>> "%-10sjane" % "hi"

 

2. 소수점 표현하기

>>> "%0.4f" % 3.42134234

>>> "%10.4f" % 3.42134234

=> format 함수를 사용한 포매팅

좀 더 발전된 스타일로 문자열 포맷을 지정할 수 있음

 

==>숫자 바로 대입하기

>>> "I eat {0} apples".format(3)

==> 문자열 바로 대입하기

>>> "I eat {0} apples".format("five")

==>숫자 값을 가진 변수로 대입하기

>>> number = 3

>>> "I eat {0} apples".format(number)

문자열의 {0} 항목이 number 변수 값인 3으로 바뀜

 

==>2개 이상의 값 넣기

>>> number = 10

>>> day = "three"

>>> "I ate {0} apples.so I was sick for {1} days.".format(number,day)

==>이름으로 넣기

>>> "I ate {number} apples. so I was sick for {day} days.".format(number=10, day=3)

{0}, {1}과 같은 인덱스 항목 대신 더 편리한 {name} 형태를 사용함

 

==>인덱스와 이름을 혼용해서 넣기

>>> "I ate {day} apples. so I was sick for {number} days.".format(number=10, day=3)

>>> "I ate {0} apples. so I was sick for {day} days.".format(10, day=3)

===>왼쪽 정렬

>>> "{0:<10}".format("hi")

:< 표현식을 사용하면 치환되는 문자열을 왼쪽으로 정렬하고, 문자열의 총 자릿수를 10으로 맞춤

 

===>오른쪽 정렬

>>> "{0:>10}".format("hi")

 

===>가운데 정렬

>>> "{0:^10}".format("hi")

 

===>공백 채우기

>>> "{0:=^10}".format("hi")

>>> "{0:!<10}".format("hi")

===>소수점 표현하기

>>> y = 3.42134234

>>> "{0:0.4f}".format(y)

>>> "{0:10.4f}".format(y)

===>{ 또는 } 문자 표현하기

>>> "{{ and }}".format()

 

=>f 문자열 포매팅

파이썬 3.6 버전부터는 f 문자열 포매팅 기능을 사용할 수 있음

 

==>문자열 앞에 f 접두사를 붙여서 사용

>>> name = '홍길동'

>>> age = 30

>>> f'나의 이름은 {name}입니다.나이는 {age}입니다.'

==>표현식 지원

 

==>딕셔너리 사용

>>> d = {'name':'홍길동','age':30}

>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'

 

==> 정렬

>>> f'{"hi":<10}'  #왼쪽 정렬

>>> f'{"hi":>10}'  #오른쪽 정렬

>>> f'{"hi":^10}'  #가운데 정렬

 

>>> a = "hi"

>>> f'{a:<10}'

>>> f'{a:^10}'

 

==>공백 채우기

>>> f'{"hi":=^10}'

>>> f'{"hi":!<10}'

==>소수점 표현하기

>>> y = 3.42134234

>>> f'{y:0.4f}'

>>> f'{y:10.4f}'

 

==> { 또는 } 문자 표현하기

>>> f'{{ and }}'

 

=> 문자열 관련 함수

문자열 자료형은 자체적으로 문자열 내장 함수를 가지고 있으며, 그것들을 사용하려면 문자열 변수 이름 뒤에 ‘.’를 붙인 다음에 함수 이름을 써주면 됨

 

==> 문자 개수 세기(count)

>>> a = "hobby"

>>> a.count('b')

 

==>위치 알려주기 1(find)

>>> a = "Python is the best choice"

>>> a.find('b')

>>> a.find('k')

 

find -1

index error난다. indexOfbound

 

==> 위치 알려주기 2(index)

>>> a = "Life is too short"

>>> a.index('t')

>>> a.index('k')

==>문자열 삽입(join)

>>> a = ","

>>> a.join('abcd')

>>> a.join(['a','b','c','d'])

 

Python은 대소문자 구분한다.

==>소문자를 대문자로 바꾸기(upper)

>>> a = "hi"

>>> a.upper()

 

 

==>대문자를 소문자로 바꾸기(lower)

>>> a = "HI"

>>> a.lower()

 

==> 왼쪽 공백 지우기(lstrip)

>>> a = "  hi  "

>>> a.lstrip()

 

==> 오른쪽 공백 지우기(rstrip)

>>> a = "  hi  "

>>> a.rstrip()

 

==> 양쪽 공백 지우기(strip)

문자 주위만 없애 준다.

>>> a = "  hi  "

>>> a.strip()

 

==>문자열 바꾸기(replace)

>>> a = "Life is too short"

>>> a.replace("Life","Your leg")

 

==>문자열 나누기(split)

>>> a ="Life is too short"

>>> a.split()

>>> a= "a:b:c:d"

>>> a.split(":")

 

 

III. 리스트 자료형

리스트(List)란 숫자나 문자 모음으로 이루어진 자료형

>>> odd = [1, 3, 5, 7, 9]

리스트명 = [요소1, 요소2, 요소3, ···]

>>> a =[]

>>> b = [1,2,3]

>>> c= ['Life','is','too','short']

>>> d = [1,2,'Life','is']

>>> e  = [1,2,['Life','is']]#중첩리스트

리스트가 3개 겹쳐있으면 3중리스트

e처럼 리스트 자체를 요소 값으로 가질 수 있음

 

=>리스트의 인덱싱과 슬라이싱

==>리스트의 인덱싱

>>> a = [1, 2, 3]

>>> a

>>> a[0]

>>> a[0] + a[2]

>>> a[-1]

>>> b = 'python'

>>> type(b)

>>> a = [1,2,3,['a','b','c']]

>>> a[0]

>>> a[3]

>>> a[-1][0]

>>> a[-1][1]

>>> a[-1][2]

>>> a= [1,2,['a','b',['Life','is']]]

>>> a[2][2][0]

 

==>리스트의 슬라이싱

>>> a = [1, 2, 3, 4, 5]

>>> a[0:2]

>>> a = '12345'

>>> a[0:2]

>>> a = [1,2,3,4,5]

>>> a[2:]

>>> a[:2]

>>> b= a[:2]

>>> b

>>> c = a[2:]

>>> c

 

==>중첩된 리스트에서 슬라이싱하기

>>> a = [1,2,3,['a','b','c'],4,5]

>>> a[2:5]

>>> a[3][:2]

>>> a[3][:]

>>> a[3]

 

=>리스트 연산하기

1. 리스트 더하기(+)

>>> a = [1,2,3]

>>> b = [4,5,6]

>>> a+b

리스트 사이에서 + 기호는 2개의 리스트를 합치는 기능을 함

 

2. 리스트 반복하기(*)

>>> a = [1,2,3]

>>> a * 3

[1, 2, 3] 리스트가 세 번 반복되어 새로운 리스트를 만들어 냄

 

3. 리스트 길이 구하기

>>> a= [1,2,3]

>>> len(a)

 

==>리스트 연산 오류

>>> a = [1,2,3]

>>> a[2]+"hi"

 정수와 문자열은 서로 더할 수 없기 때문에 형(type) 오류가 발생함

 

>>> str(a[2])+"hi"

str 함수는 정수나 실수를 문자열의 형태로 바꾸어 주는 내장 함수임

 

=>리스트의 수정과 삭제

==>리스트에서 값 수정하기

>>> a = [1,2,3]

>>> a[2] = 4

>>> a

각각의 요소이기때문에 가능하다. 하지만  string은 안된다.

 

==>del 함수를 사용해 리스트 요소 삭제하기

>>> a = [1,2,3]

>>> del a[1]

>>> a

>>> del a

>>> a

 

del a[x] x번째 요소값을 삭제함. del 객체는 변수를 삭제함

del a 는 메모리에서 데이터가 삭제된다.

del(a)

>>> a = [1, 2, 3, 4, 5]

>>> del a[2:]

>>> a

 

슬라이싱 기법을 사용하여 리스트의 요소 여러 개를 삭제함

del[x:y] x번째부터 y번째 요소 사이의 값을 삭제함

>>> a = [1, 'a', 'b', 'c', 4]

>>> a[1:3] = [ ]

>>> a

[ ] 사용해 리스트 요소 삭제함

a[1:3] [ ]으로 바꿔 주었기 때문에 [‘a’, ‘b’]가 삭제된 [1, ‘c’, 4]가 됨

 

id(a)를 메모리에 있는 주소를 의미한다.

 

########20191211

20191210 정리

\백스럴시 escape code

문자열%%

\\

문자열은 곱한다는 것은 문자열을 반복한다는 것이다.

slicing은 짜르기 0 <= a <4

%f 실수

문자열 포매팅

r이라는 것이있다.

find 못찾을 경우 -1

sort원자료도 정렬된다.

sorted정렬되지만 원자료는 안바꿔진다.

extend list형태로 값을 줘야 한다.

 

리스트자료형

=>리스트 관련 함수

리스트 변수 이름 뒤에 ‘.’를 붙여서 리스트 관련 함수를 사용할 수 있음

==>리스트에 요소추가

>>> a = [1,2,3]

>>> a.append(4)

>>> a

 

append(x)는 리스트의 맨 마지막에 x를 추가하는 함수임

리스트 안에는 어떤 자료형도 추가할 수 있음

>>> a.append([5,6])

>>> a

리스트에 다시 리스트를 추가한 결과임

 

==>리스트 정렬(sort)

>>> a = [1,4,3,2]

>>> a.sort()

>>> a

 sort 함수는 리스트의 요소를 순서대로 정렬해 줌

>>> a = ['a','c','b']

>>> a.sort()

>>> a

==>리스트 뒤집기(reverse)

>>> a = ['a','b','c']

>>> a.reverse()

>>> a

 

===>desc 정렬하기

방안 1 :

>>> a = ['a','c','d']

>>> a.sort(reverse = True)

>>> a

방안 2:

>>> a = ['a','c','d']

>>> a.sort()

>>> a.reverse()

 

==>위치 반환(index)

>>> a= [1,2,3]

>>> a.index(3)

>>> a.index(1)

>>> a.index(4)

index(x) 함수는 리스트에 x라는 값이 있으면 x의 위치 값을 돌려줌

0이라는 값은 a 리스트에 존재하지 않기 때문에 값 오류가 발생함

 

 

==>리스트에 요소 삽입(insert)

>>> a = [1,2,3]

>>> a.insert(0,4)

>>> a

0번째 자리, 첫 번째 요소(a[0]) 위치에 값 4를 삽입하라는 뜻임

>>> a.insert(3,5)

>>> a

3번째 자리, 네 번째 요소(a[3]) 위치에 값 5를 삽입하라는 뜻임

>>> a.append(6)

>>> a

 

==>리스트에 요소 제거(remove)

remove(x)는 리스트에서 첫 번째로 나오는 x를 삭제하는 함수이다.

>>> a = [1, 2, 3, 1, 2, 3]

>>> a.remove(3)

>>> a

a 3이라는 값을 2개 가지고 있을 경우 첫 번째 3만 제거되는 것을 알 수 있다.

>>> a.remove(3)

>>> a

remove(3)을 한 번 더 실행하면 다시 3이 삭제된다.

 

==>리스트 요소 끄집어 내기(pop)s

>>> a= [1,2,3]

>>> a.pop()

>>> a

>>> a = [1,2,3]

>>> a.pop(1)

>>> a

a.pop(1) a[1]의 값을 끄집어 내고 값이 삭제된 것이 확인됨

 

==>리스트에 포함된 요소 x의 개수 세기(count)

>>> a= [1,2,3,1]

>>> a.count(1)

count(x)는 리스트 내에 x개가 몇 개 있는지 조사하여 그 개수를 돌려주는 함수

 

=>리스트 확장(extend)

>>> a =  [1,2,3]

>>> a.extend([4,5])

>>> a

>>> b = [6,7]

>>> a.extend(b)

>>> a

 

extend(x)에서 x에는 리스트만 올 수 있으며, a리스트에 x리스트를 더하게 됨

튜플로 입력하고 더하기 한다

append(),insert(),extend()의 차이점

>>> a.append([8,9])

>>> a

>>> a.append(8,9)

append는 하나에 하나씩 가능하다.

>>> a.insert([(3,5),(5,6)])

insert는 하나에 하나씩 가능하다.

>>> a.insert(1,[2,3])

>>> a

IV. 튜플 자료형

튜플(tuple)은 리스트와 거의 비슷하며 다른 점은 다음과 같음

리스트는 [ ]으로 둘러싸지만, 튜플은 ( )으로 둘러쌈

리스트는 그 값의 생성, 삭제, 수정이 가능하지만, 튜플은 그 값을 바꿀 수 없음

>>> t1 = ()

>>> t2 = (1,)

>>> t3 = (1,2,3)

>>> t4 = 1,2,3

>>> t5 = ('a','b',('ab','cd'))

t2 = (1,)처럼 1개의 요소만을 가질 때는 요소 뒤에 콤마(,)를 반드시 붙여야 함

t4 = 1, 2, 3처럼 괄호( )를 생략해도 무방함

프로그램 실행되는 동안 그 값이 변하지 않기를 바란다면 튜플을 사용하고,수시로 그 값을 변화시켜야 한다면 리스트를 사용함

 

=>튜플의 요소값을 지우거나 변경하려고 하면 어떻게 될까?

==>튜플 요소 값을 삭제하려 할 때

>>> t1 = (1,2,'a','b')

>>> del t1[0]

튜플은 요소를 지우는 행위가 지원되지 않는다는 메시지를 확인할 수 있음

 

==>튜플 요소 값을 변경하려 할 때

>>> t1 = (1,2,'a','b')

>>> t[0] = 'c'

튜플의 요소 값을 변경하려고 해도 오류가 발생하는 것을 확인할 수 있음

튜플은 삭제오 변경이 불가능하다.

 

=>튜플 다루기

==>인덱싱하기

>>> t1 = (1,2,'a','b')

>>> t1[0]

>>> t1[3]

>>> t1[5]

문자열, 리스트와 같이 t1[0], t1[3]처럼 인덱싱이 가능함

index의 반환한 값이 없을 경우 오류난다.

 

==>슬라이싱하기

>>> t1 = (1,2,'a','b')

>>> t1[1:]

>>> t1[1:9]

t1[1]부터 튜플의 마지막 요소까지 슬라이싱 함

 

==>튜플 더하기

>>> t2 = (3,4)

>>> t1+t2

 

==>튜플 곱하기

>>> t2 * 3

 

==>튜플의 길이 구하기

>>> t1= (1,2,'a','b')

>>> len(t1)

 

==>대입문

>>> a = 4

>>> b = a

>>> b

>>> a = 5

>>> a

>>> b

 

#연습문제 87

t1 = (1,2,3)

t2 = (4,)

t1+t2

V. 딕셔너리 자료형

딕셔너리는 단어 그대로 해석하면 사전이라는 뜻이며, 연관 배열(Associative array) 또는 해시(Hash)라고 함

딕셔너리는 리스트나 튜플처럼 순차적으로 해당 요소값을 구하지 않고, Key를 통해 Value를 얻으며 이것이 딕셔너리의 가장 큰 특징임

딕셔너리는 어떻게 만들까?

{Key1:Value1, Key2:Value2, Key3:Value3 ···}

Key Value의 쌍 여러 개가 { }로 둘러싸여 있음

각각의 요소는 Key : Value 형태로 이루어져 있고 쉼표(,)로 구분되어 있음

>>> dic = {'name':'pey','phone':'0119993323','birth':'1118'}

>>> dic

딕셔너리 dic의 정보

 

>>> a = {1:'hi'}

Key로 정수값 1, Value ‘hi’라는 문자열을 사용함

>>> a = {'a':[1,2,3]}

Value에 리스트도 넣을 수 있음

 

=>딕셔너리 쌍 추가하기

1. 딕셔너리 쌍 추가하기

>>> a = {1:'a'}

>>> a[2] = 'b'

>>> a

>>> a['name'] ='pey'

>>> a

>>> a[3] = [1,2,3]

>>> a

Key 3, Value [1, 2, 3]을 가지는 한 쌍이 추가됨

 

2. 딕셔너리 요소 삭제하기

>>> del a[1]

>>> a

>>> del a[1] #다시 실행 할 경우 오류 난다.

 

=>딕셔너리를 사용하는 방법

{“김연아”:”피겨스케이팅“, ”류현진”:”야구“, “박지성“:”축구“, “귀도”:”파이썬”}

==>딕셔너리에서 Key를 사용해 Value 얻기

>>> grade = {'pey':10,'julliet':99}

>>> grade['pey']

>>> grade['julliet']

>>> grade[1] #다시 실행 할 경우 오류 난다.

>>> a = {1:'a', 2:'b'}

>>> a[1]

>>> a[2]

[ ]안의 숫자 1은 두 번째 요소를 뜻하는 것이 아니라, Key에 해당하는 1을 나타냄

>>> a= {'a':1,'b':2}

>>> a['a']

>>> a['b']

딕셔너리 a a[Key]로 입력해서 Key에 해당하는 Value를 얻음

>>> dic = {'name':'pey','phone':'0119993323','birth':'1118'}

>>> dic['name']

>>> dic['phone']

>>> dic['birth']

 

==>딕셔너리를 만들 때 주의할 사항

>>> a = {1:'a', 1:'b'}

>>> a

딕셔너리에서 Key는 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시됨. 마지막 Value가 등록됨

>>> a= {[1,2]:'hi'}

Key에 리스트를 쓸 수 없고, 튜플은 Key로 쓸 수 있음

리스트는 그 값이 변할 수 있기 때문에 Key로 쓸 수 없음

딕셔너리의 Key 값으로 딕셔너리를 사용할 수 없음

Value에는 변하는 값이든 변하지 않는 값이든 상관없이 아무 값이나 넣을 수 있음

 

=>딕셔너리 관련 함수

==>Key 리스트 만들기(keys)

>>> a =  {'name':'pey','phone':'0119993323','birth':'1118'}

>>> a.keys()

a.keys( )는 딕셔너리 a Key만을 모아서 dict_keys라는 객체를 돌려줌

>>> for k in a.keys():

...     print(k)

...

 

dict_keys 객체는 리스트를 사용하는 것과 차이가 없지만, 리스트 고유의 append, insert, pop, remove, sort 함수는 수행할 수 없음

>>> list(a.keys())

>>> d = list(a.keys())

>>> d[1]

 

==>Value 리스트 만들기(values)

>>> a.values()

values 함수는 딕셔너리 a Value만을 모아서 dict_values라는 객체를 돌려줌

a[]이런식으로 하면 오류난다.그래서 get()으로 하면 된다.

 

==>Key, Value 쌍 얻기(items)

>>> a.items()

 

==>Key : Value 쌍 모두 지우기(clear)

>>> a.clear()

>>> a

 

==>Key Value 얻기(get)

>>> a = {'name':'pey','phone':'0119993323','birth':'1118'}

>>> a.get('name')

>>> a.get('phone')

 

>>> print(a.get('nokey'))

>>> print(a['nokey'])

a[‘nokey’]처럼 존재하지 않는 키(nokey)로 값을 가져오려고 할 때 a[‘nokey’] Key 오류를 발생시키고, a.get(‘nokey’) None을 리턴한다는 차이가 있음

>>> a.get('foo','bar')

>>> a

딕셔너리 안에 찾으려는 Key 값이 없을 경우 미리 정해 둔 디폴트 값을 대신 가져오게 하고 싶을 때에는 get(x, ‘디폴트 값‘)을 사용하면 편리함

>>> a.get('foo','bar','ddd')

>>> a.get('foo','bar1')

>>> a.get('foo')

>>> a

 

==>해당 Key가 딕셔너리 안에 있는지 조사하기(in)

>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}

>>> 'name' in a

>>> 'email' in a

>>> print(a.get('foo'))

VI. 집합 자료형

집합에 관련된 것들을 쉽게 처리하기 위해 만들어진 자료형

집합 자료형은 어떻게 만들까?

집합 자료형은 set 키워드를 이용해 만들 수 있음

중복제거하고 순서없이 해주는 것

중복된것을 없에고 집합을 만든다.

>>> s1 = set([1,2,3])

>>> s1

>>> s2 = set("Hello")

>>> s2

>>> s1 = set([1,2,3,3])

>>> s1

 

집합 자료형의 특징

중복을 허용하지 않음

순서가 없음(Unordered) 

리스트나 튜플은 순서가 있기 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있지만, set 자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없음

set 자료형에 저장된 값을 인덱싱으로 접근하려면 리스트나 튜플로 변환 후 해야 함

>>> s1 = set([1,2,3])

-------list로 꾸기

>>> l1 = list(s1)

>>> l1

>>> l1[0]

-------tuple로 꾸기

>>> t1= tuple(s1)

>>> t1

>>> t1[0]

=>교집합, 합집합, 차집합 구하기

set 자료형을 유용하게 사용하는 경우는 교집합, 합집합, 차집합을 구할 때임

2개의 set 자료형, s1 1부터 6까지의 값을 가지게 되었고 s2 4부터 9까지의 값을 가지게 되었음

>>> s1 = set([1,2,3,4,5,6])

>>> s2 = set([4,5,6,7,8,9])

 

==>교집합(&)

>>> s1 & s2

‘&’ 기호를 사용하면 교집합을 구할 수 있음

>>> s1.intersection(s2)

==>합집합( | )

>>> s1 | s2

>>> s1.union(s2)

‘|’ 기호나 union 함수를 사용하면 합집합을 구할 수 있음

 

==>차집합( - )

>>> s1-s2

>>> s2-s1

>>> s1.difference(s2)

>>> s2.difference(s1)

빼기(-) 기호나 difference 함수를 사용하면 차집합을 구할 수 있음

 

=>집합 자료형 관련 함수

==> 1개 추가하기(add)

>>> s1 = set([1,2,3])

>>> s1.add(4)

>>> s1

 

이미 만들어진 set 자료형에 값을 추가할 수 있음

 

==>값 여러 개 추가하기(update)

>>> s1 = set([1,2,3])

>>> s1.update([4,5,6])

>>> s1

 

==>특정 값 제거하기(remove)

>>> s1 = set([1,2,3])

>>> s1.remove(2)

>>> s1

VII. 불 자료형

(bool) 자료형이란?

(True)과 거짓(False)을 나타내는 자료형

True :

• False : 거짓

>>> a = True

>>> b = False

 따옴표로 감싸지 않은 True False 예약어를 변수에 지정해서 사용함

>>> type(a)

>>> type(b)

 

=> 비교연산자

>>> 1 ==1

>>> 2 >1

>>> 2 <1

조건문의 반환 값으로도 사용됨

>>> a = 5

>>> a < 6

>>> a > 6

자료형의 참과 거짓

 

문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어 있으면(““, [], (), {}) 거짓이 됨

당연히 비어 있지 않으면 참이 됨

숫자는 그 값이 0일 때 거짓이 됨

FIFO->QUEUE

LIFO->STACK

 

=>참과 거짓이 프로그램에서 쓰이는 사례

>>> a = [1,2,3,4]

>>> while a:

...     a.pop()

...

>>> a

 

a.pop() 함수는 리스트 a의 마지막 요소를 끄집어 내고, 그 요소는 삭제함

[]는 비어있는 리스트로 거짓이므로 False란 문자열이 출력됨

>>> if []:

...     print("True")

... else:

...     print("False")

...

 

 [1, 2, 3]은 요소값이 있는 리스트로 참이므로 True를 출력함

>>> if [1,2,3]:

...     print("True")

... else:

...     print("False")

...

 

=> (bool) 연산

>>> bool('python')

>>> bool('')

>>> bool([1,2,3])

>>> bool([])

>>> bool(0)

>>> bool(3)

 

문제

1.

>>> a = [1,1,1,2,2,3,3,3,4,4,5]

>>> s = set(a)

>>> s

>>> l = list(a)

>>> l

>>> l = list(s)

>>> l

 

2.

>>> a= set([1,1,1,2,2,3,3,3,4,4,5])

>>> a

>>> print(list(a))

 

3.

>>> a= set([1,1,1,2,2,3,3,3,4,4,5])

>>> b= list(set(a))

>>> b

VIII. 자료형의 값을 저장하는 공간, 변수

변수를 만들 때는 =(assignment) 기호를 사용

변수명 = 변수에 저장할 값

변수를 만들 때 자료형을 직접 지정할 필요가 없음

변수에 저장된 값을 스스로 판단하여 자료형을 지정하기 때문에 더 편리함

>>> a = 1

>>> b = "python"

>>> c = [1,2,3]

 

파이썬에서 사용하는 변수는 객체를 가리키는 것

>>> a = [1,2,3]

변수 a [1, 2, 3] 리스트가 저장된 메모리의 주소를 가리키게 됨

>>> a = [1,2,3]

>>> id(a)

 

=> 리스트를 복사할 때

>>> a = [1,2,3]

>>> b = a

>>> id(a)

>>> id(b)

>>> a is b

 

b라는 변수에 a가 가리키는 리스트를 대입하였음

b a와 완전히 동일하다고 할 수 있음

다만 [1, 2, 3] 리스트를 참조하는 변수가 a변수 1개에서 b변수가 추가됨

>>> a[1] = 4

>>> a

>>> b

>>> b[2] = 5

>>> b

>>> a

 

 

>>> a = 4

>>> b = a

>>> a is b

>>> a = 5

>>> a

>>> b

>>> b = 6

>>> a

>>> b

=>변수를 생성할 때 a 변수의 값을 가져오면서 다른 주소를 가리키도록 만드는 방법

1. [:] 이용

리스트 전체를 가리키는 [:]을 이용해서 복사함

>>> a = [1,2,3]

>>> b = a[:]

>>> a[1] = 4

>>> a

>>> b

a 리스트 값을 바꾸더라도 b 리스트에는 영향을 끼치지 않음

 

2. copy 모듈 이용

>>> from copy import copy

>>> a = [1,2,3]

>>> b = copy(a)

>>> a

>>> b

>>> b is a

b a가 가리키는 객체는 서로 다르다는 것을 알 수 있음

 

=>변수를 만드는 여러 가지 방법

>>> a,b = ('python','life')

>>> (a,b) = 'python','life'

>>> [a,b] = ['python','life']

>>> a = b = 'python'

>>> a is b

 

튜플로 a, b에 값을 대입할 수 있음

튜플은 괄호를 생략해도 됨

리스트로 변수를 만들 수 있음

여러 개의 변수에 같은 값을 대입할 수 있음

>>> a = 3

>>> b = 5

>>> a, b = b,a

>>> a

>>> b

>>> a= 3

>>> b = 5

>>> del(a)

>>> del b

연습문제: 112페이지

#1.평균점수

>>> a = 80 #국어

>>> b = 75 #영어

>>> c = 55 #수학

>>> (a+b+c)/3

 

#2.13이 홀수 인지 짝수

>>> a = 13

>>> if a%2 ==0:

           print("짝수")

else:

           print("홀수")

 

#3.

>>> pin = "881120-1068234"

>>> yyyymmdd =pin[:6]

>>> num =pin[7:]

>>> yyyymmdd  #연월일 부분 출력

>>> num          #숫자 부분 출력

 

#4.

>>> pin = "881120-1068234"

>>> pin[7]

 

#5.

>>> a = "a:b:c:d"

>>> b = a.replace(":","#")

>>> b

 

#6.

>>> a = [1,3,5,4,2]

>>> a.sort()

>>> a.reverse()

>>> a

 

#7.

>>> a = ['Life','is','too','short']

>>> a = " ".join(a)

>>> a

 

#8.

>>> a = (1,2,3)

>>> a = a + (4,)

>>> a

 

#9.

>>> a = dict()

>>> a['name'] = 'python'

>>> a

>>> a[('a',)] = 'python'

>>> a

>>> a[[1]] = 'python'

>>> a[250] = 'python'

>>> a

 

#10.

>>> a = {'A':90,'B':80,'C':70}

>>> result = a.pop("B")

>>> a

>>> result

 

#11.

>>> a = [1,1,1,2,2,3,3,3,4,4,5]

>>> aSet = set(a)

>>> b = list(aSet)

>>> b

 

#12.

>>> a = b = [1,2,3]

>>> a[1] = 4

>>> b

>>> a is b

반응형

'Study > Python' 카테고리의 다른 글

python-6  (0) 2020.09.10
python-5  (0) 2020.09.09
python-4  (0) 2020.09.08
python-3  (0) 2020.09.08
python-1  (0) 2020.09.06

+ Recent posts