Python datatype

59
Study Of Landvibe Python - DataType

Transcript of Python datatype

Page 1: Python datatype

StudyOf Landvibe

Python - DataType

Page 2: Python datatype

Outline

1. Overview2. Built-in Type3. Data Type4. Input / Output5. Mutable vs Immutable6. Data Structure

Page 3: Python datatype

Calling a function

Object instantiation

Overview - Exampleimport math def showArea(shape): print("Area = ", shape.area() )

def widthOfSquare(area): return math.sqrt(area) class Rectangle(object): def __init__(self, width, height): self.width = width self.height = height def area(self): return self.width * self.height ###### Main Program ######r = Rectangle(10, 20) showArea(r)

Import a library module

Function

No Semicolon ; No brackets {}

Class

Comment

Indent ( ๋ณดํ†ต 4์นธ )

Page 4: Python datatype

Overview โ€“ Similarities to Java

โ€ข Everything inherits from โ€œobjectโ€โ€ข Large standard libraryโ€ข Garbage collection

Page 5: Python datatype

Overview โ€“ Differences to Java

โ€ข Dynamic Typingโ€ข Everything is โ€œobjectโ€

โ€ข No name declartionsโ€ข Sparse syntax

โ€ข No {} for blocks, just indentationโ€ข No () for if/while conditions

โ€ข Interative interpreterโ€ข # for comments

Page 6: Python datatype

Overview โ€“ Python Interpreter

Complier ๊ฐ€ python code ๋ฅผ ์ปดํŒŒ์ผํ•ด์„œ .pyc file(byte code, intermediate code) ๋กœ ๋ณ€ํ™˜์‹œํ‚จ๋‹ค

.py file(python code)

Compiler .pyc file Inter-preter Output

Interpreter๊ฐ€ .pyc file ์„ ํ”„๋กœ์„ธ์Šค์— loadํ•˜์—ฌ ์‹คํ–‰์‹œํ‚จ๋‹ค

Page 7: Python datatype

Overview โ€“ Python Interpreter

์—ฅ ? ์ด๊ฑฐ ์ž๋ฐ” ์•„๋‹ˆ์—์š” ????

์ž๋ฐ”๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ์–ธ์–ด๋ผ๋ฉด์„œ์š” !?!?!?!?!!?

Page 8: Python datatype

Overview โ€“ Python Interpreter

Complier ๊ฐ€ python code ๋ฅผ ์ปดํŒŒ์ผํ•ด์„œ .pyc file(byte code, intermediate code) ๋กœ ๋ณ€ํ™˜์‹œํ‚จ๋‹ค

.py file(python code)

Compiler .pyc file Inter-preter Output

Python Interpreter ์“ฐ๋ฉด CPythonJVM ์“ฐ๋ฉด JythonCLR ์“ฐ๋ฉด Ironpython

Interpreter = VM( ๊ฑฐ์˜ ๊ฐ™์Šต๋‹ˆ๋‹ค )

Compile ๊ณผ์ •์€ High Level Language ์˜ ๊ณตํ†ต์ ์ธ ํŠน์ง•์ž…๋‹ˆ๋‹ค .

Page 9: Python datatype

Built-in Type Hierarchy

Page 10: Python datatype

Data Type โ€“ Preview

โ€ข ํŒŒ์ด์ฌ์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค .

123a>>> a=123

>>> print(a)123

Page 11: Python datatype

Data Type โ€“ Preview

โ€ข ๋ณ€์ˆ˜ ์ด๋ฆ„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์žโ€ข ์†Œ๋ฌธ์ž (a~z)โ€ข ๋Œ€๋ฌธ์ž (A~Z)โ€ข ์ˆซ์ž (0~9)โ€ข ์–ธ๋”์Šค์ฝ”์–ด (_)

๊ฐ€๋Šฅโ€ข bominkyo13 โ€ข __landvibeโ€ข KoenHee_91

๋ถˆ๊ฐ€๋Šฅโ€ข 13je_jangโ€ข landvibe!@#โ€ข if

Page 12: Python datatype

Data Type โ€“ Preview

โ€ข ์˜ˆ์•ฝ์–ด๋Š” ๋ณ€์ˆ˜์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉ๋ถˆ๊ฐ€

Page 13: Python datatype

Data Type

โ€ข ๋ฐ์ดํ„ฐ์˜ ๊ณตํ†ต๋œ ํŠน์ง•๊ณผ ์šฉ๋„์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•˜์—ฌ ์ •์˜ํ•œ ๊ฒƒโ€ข ์ˆซ์žํ˜• (Numeric Type)

- Integer, float, complexโ€ข ๋…ผ๋ฆฌํ˜• (Boolean Type)

- True, Falseโ€ข ๋ฌธ์ž์—ดํ˜• (String Type)

- โ€œThis is Stringโ€

Page 14: Python datatype

Numeric Typesโ€ข Integers

โ€ข Generally signed, 32-bitโ€ข Long Integer

โ€ข Unlimited size ( ๋™์ ์œผ๋กœ ๊ฒฐ์ • , 64 ๋น„ํŠธ ์ด์ƒ ๊ฐ€๋Šฅ )โ€ข In python3, long = int

โ€ข Floatโ€ข ๋ถ€๋™์†Œ์ˆ˜์ โ€ข Python ์—๋Š” double ํ˜• ์—†์Œ

โ€ข Complexโ€ข Format : <real> + <imag>jโ€ข Example : 6+3j

Page 15: Python datatype

Numeric Types

>>> 456456>>> 00์ˆซ์ž ์•ž์— ๊ธฐํ˜ธ๊ฐ€ ์—†์œผ๋ฉด ์–‘์ˆ˜ , + ๋ถ™ํžˆ๋ฉด ์–‘์ˆ˜ , - ๋ถ™ํžˆ๋ฉด ์Œ์ˆ˜>>> 123123>>> +123123>>> -123-123

์—ฐ์†๋œ ์ˆซ์ž๋Š” ๋ฆฌํ„ฐ๋Ÿด ์ •์ˆ˜๋กœ ๊ฐ„์ฃผ

Page 16: Python datatype

Numeric Types

>>> 5+1015>>> 5-10-5/ ์—ฐ์‚ฐ์€ ๋ถ€๋™์†Œ์ˆซ์  , // ์—ฐ์‚ฐ์€ ๋ชซ , % ์—ฐ์‚ฐ์€ ๋‚˜๋จธ์ง€ ๊ฐ’ >>> 5/100.5>>> 5//100>>> 5%105

๋ง์…ˆ , ๋บ„์…ˆ , ๊ณฑ์…ˆ , ๋‚˜๋ˆ—์…ˆ ๊ฐ€๋Šฅ , ** ๋Š” n ์ œ๊ณฑ>>> 5*1050>>> 5/100.5

>>> 5/0Taceback (most recent call lask): File โ€œ<stdin>โ€, line 1, in <mod-ule>ZeroDivisionError: division by zero

0 ์œผ๋กœ ๋‚˜๋ˆ„์ง€ ๋ง™์‹œ๋‹ค

>>> 2**101024

Page 17: Python datatype

Numeric Types

โ€ข ์—ฐ์‚ฐ ์šฐ์„  ์ˆœ์œ„โ€ข 2400 // 500 * 500 + 2400 % 500 ?

โ€ข ์ง„์ˆ˜ (base)โ€ข Default : 10 ์ง„์ˆ˜ (Decimal)โ€ข 2 ์ง„์ˆ˜ (Binary) : 0b, 0Bโ€ข 8 ์ง„์ˆ˜ (Octal) : 0o, 0Oโ€ข 16 ์ง„์ˆ˜ (Hex) : 0x, 0Xโ€ข 10 ์ง„์ˆ˜ > n ์ง„์ˆ˜ ๋ณ€ํ™˜ : bin(), oct(), hex() ํ•จ์ˆ˜ ์‚ฌ์šฉ

โ€ข ํ˜• ๋ณ€ํ™˜โ€ข int(), float() ํ•จ์ˆ˜ ์‚ฌ์šฉ

Page 18: Python datatype

Numeric Types

>>> 2400 // 500 * 500 + 2400 % 5002400>>> ((2400 // 500) * 500) + (2400 % 500)2400์ง„์ˆ˜ ๋ณ€ํ™˜>>> 0b102>>> 0o108>>> 0x1016

์—ฐ์‚ฐ์ž ์šฐ์„  ์ˆœ์œ„

>>> bin(10)โ€˜0b1010โ€™>>> oct(10)โ€˜0o12โ€™>>> hex(10)โ€˜0xaโ€™ // str ํ˜•์œผ๋กœ ๋ฐ˜ํ™˜

Page 19: Python datatype

Numeric Types

>>> int(True)1>>> int(False)0

ํ˜• ๋ณ€ํ™˜ (int)

>>> int(99.5)99>>> int(1.0e4)10000

>>> int(โ€™88โ€™)88>>> int(โ€˜-23โ€™)-23

>>> int(โ€™99.5โ€™)ERROR>>> int(โ€˜1.0E4โ€™)ERROR

์†Œ์ˆ˜์  , ์ง€์ˆ˜๋ฅผ ํฌํ•จํ•œ ๋ฌธ์ž์—ด์€ ์ฒ˜๋ฆฌ x

>>> 4+0.94.9

์ˆซ์ž์˜ ํƒ€์ž…์„ ์„ž์–ด์„œ ์‚ฌ์šฉํ•˜๋ฉด , ์ž๋™์œผ๋กœ ํ˜•๋ณ€ํ™˜

Page 20: Python datatype

Numeric Types

>>> float(True)1.0>>> float(False)0.0

ํ˜• ๋ณ€ํ™˜ (float)

>>> float(99)99.0>>> float(1.0e4)10000.0

>>> float(โ€™88โ€™)88.0>>> float(โ€˜-23โ€™)-23.0

Page 21: Python datatype

Numeric Types

โ€ข ์ •๋ฆฌ์—ฐ์‚ฐ ๊ธฐํ˜ธ ๊ฒฐ๊ณผ ์šฐ์„ ์ˆœ์œ„x + y x ๋”ํ•˜๊ธฐ yx - y x ๋นผ๊ธฐ yx * y x ๊ณฑํ•˜๊ธฐ yx / y x ๋‚˜๋ˆ„๊ธฐ y (float ๊ฐ’ )x // y x ๋ฅผ y ๋กœ ๋‚˜๋ˆˆ ๊ฐ’์˜ ๋ชซx % y x ๋ฅผ y ๋กœ ๋‚˜๋ˆˆ ๊ฐ’์˜ ๋‚˜๋จธ์ง€-x ๋ถ€ํ˜ธ ๋ณ€๊ฒฝ+x ๋ณ€๋™ ์—†์Œx ** y x ์˜ y ์ œ๊ณฑ

๋‚ฎ์Œ

๋†’์Œ

Page 22: Python datatype

Boolean Types

๋น„๊ต ์—ฐ์‚ฐ์ž ๋œป < ์ž‘์€ <= ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ > ํฐ >= ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ == ๊ฐ™์€ != ๊ฐ™์ง€ ์•Š์€ is ๊ฐ™์€ ๊ฐ์ฒด์ธ is not ๊ฐ™์€ ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž ๊ฒฐ ๊ณผ x or y x, y ์ค‘ ํ•˜๋‚˜๋งŒ

์ฐธ์ด๋ฉด ์ฐธ , ๋‚˜๋จธ์ง€๋Š” ๊ฑฐ์ง“

x and y x, y ๋ชจ๋‘ ์ฐธ์ด๋ฉด ์ฐธ , ๋‚˜๋จธ์ง€๋Š” ๊ฑฐ์ง“

not x x ๊ฐ€ ์ฐธ์ด๋ฉด ๊ฑฐ์ง“ ,x ๊ฐ€ ๊ฑฐ์ง“์ด๋ฉด ์ฐธ

โ€ข True & False

Page 23: Python datatype

Boolean Types

>>> a=123123>>> b=123123>>> id(a)25428720>>> id(b)25428704>>> a is b # is ๋Š” id ๊ฐ’์„ ๋น„๊ตFalse>>> a == b # == ๋Š” ๋‚ด์šฉ์„ ๋น„๊ตTrue

== vs is

Page 24: Python datatype

Boolean Types

>>> 4 > 9 or 3 > 2True>>> 4 > 9 and 3 > 2False>>> not 4 > 9True

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ !

Page 25: Python datatype

String Types

โ€ข ํŒŒ์ด์ฌ์˜ ๊ฐ€์žฅ ํฐ ์žฅ์  ์ค‘ ํ•˜๋‚˜ โ€“ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ๊ฐ€ ์‰ฝ๋‹คโ€ข ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ๋Š” ํ™œ์šฉ๋„๊ฐ€ ์•„์ฃผ ๋†’์Œ !โ€ข Sequence( ๋ฐฐ์—ด์˜ ์„ฑ์งˆ ) ์˜ Immutable ํ•œ Typeโ€ข ๋ฌธ์ž์—ด์€ ์ธ์šฉ ๋ถ€ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค

โ€ข โ€˜Single Quotesโ€™โ€ข โ€œDouble Quotesโ€โ€ข โ€œโ€โ€ Triple Quotesโ€โ€โ€ or โ€˜โ€™โ€™ Triple Quotesโ€™โ€™โ€™

โ€ข ์˜ˆ์‹œ>>> print(โ€˜This string may contain a โ€œ โ€™)This string may contain a โ€œ>>> print(โ€œA โ€˜ is allowedโ€)A โ€˜ is allowed

Page 26: Python datatype

String Types

>>> str(98.6)โ€˜98.6โ€™>>> str(1.0e4)โ€˜10000.0โ€™>>> str(True)โ€˜Trueโ€™

๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€ํ™˜ str()

>>> โ€˜Inhaโ€™ + โ€˜Univโ€™โ€˜InhaUnivโ€™

๊ฒฐํ•ฉ : str1 + str2

>>> โ€˜Inhaโ€™ * 5โ€˜InhaInhaInhaInhaInhaโ€™

๋ฐ˜๋ณต : str * number

Page 27: Python datatype

String Types

>>> pirnt(โ€œ ํ—ˆ xx ์ค‘๊ฐ„๊ณ ์‚ฌ ์ ์ˆ˜ :โ€œ + 30)

str() ์„ ์“ฐ๋Š” ์ด์œ  ?

>>> pirnt(โ€œ ํ—ˆ xx ์ค‘๊ฐ„๊ณ ์‚ฌ ์ ์ˆ˜ :โ€œ + str(30))

๋ช…์‹œ์ ์œผ๋กœ ํ˜•๋ณ€ํ™˜์ด ํ•„์š”ํ•  ๋•Œ !

Page 28: Python datatype

String Types

>>> letter = โ€˜landvibeโ€™>>> letter[0]โ€˜lโ€™>>> letter[1]โ€˜aโ€™>>> letter[7]โ€˜eโ€™>>> letter[0:3]โ€˜lanโ€™>>> letter[1:4]โ€˜andโ€™>>> letter[3:]โ€˜dvibeโ€™>>> letter[:]โ€˜landvibeโ€™

๋ฌธ์ž์—ด ์ถ”์ถœ : str[] > Seqeunce ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ !

Page 29: Python datatype

String Types

>>> print(โ€œโ€โ€ ๋ณด๋ฏผ์•„๊ณต๋ถ€์ข€ํ•˜์žโ€œโ€โ€ )

๋ณด๋ฏผ์•„๊ณต๋ถ€์ข€ํ•˜์ž

โ€œโ€โ€ โ€œโ€โ€ ์€ ์–ด๋”ฐ ์“ฐ์ง€ ?

>>> s=โ€œ ๋ณด๋ฏผ์•„ ๊ณต๋ถ€์ข€ ํ•˜์žโ€>>> len(s)10

๋ฌธ์ž์—ด์˜ ๊ธธ์ด : len()

>>> print(โ€˜ ๋ณด๋ฏผ์•„ \n ๊ณต๋ถ€์ข€ \n ํ•˜์žโ€™ )๋ณด๋ฏผ์•„๊ณต๋ถ€์ข€ํ•˜์ž

์ด์Šค์ผ€์ดํ”„ ๋ฌธ์ž์—ด : \n

Page 30: Python datatype

String Types

>>> a=โ€˜ ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‰ฝ๋„ค์š” !โ€™>>> a.startswith(โ€˜ ํŒŒ์ด์ฌโ€™ ) # ๋ฌธ์ž์—ด์ด โ€˜ํŒŒ์ด์ฌโ€˜์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š”์ง€ ํ™•์ธTrue>>> a.endswith(โ€˜!โ€™) # ๋ฌธ์ž์—ด์ด โ€˜ !โ€™ ๋กœ ๋๋‚˜๋Š”์ง€ ํ™•์ธTrue>>> a.endswith(โ€˜ ๊ตฌ๋ ค์š”โ€™ ) # ๋ฌธ์ž์—ด์ด โ€˜๊ตฌ๋ ค์š”โ€™๋กœ ๋๋‚˜๋Š”์ง€ ํ™•์ธFalse>>> a.replace(โ€˜ ํŒŒ์ด์ฌโ€™ , โ€˜pythonโ€™) # โ€˜ ํŒŒ์ด์ฌโ€™์„ โ€˜ pythonโ€™ ์œผ๋กœ ๋ณ€๊ฒฝโ€˜python ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‰ฝ๋„ค์š” !>>> โ€˜Pythonโ€™.upper() # โ€˜Pythonโ€™ ์„ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€๊ฒฝโ€˜PYTHONโ€™>>> โ€˜Pythonโ€™.lower() # โ€˜Pythonโ€™ ์„ ์†Œ๋ฌธ์ž๋กœ ๋ณ€๊ฒฝโ€˜pythonโ€™>>> โ€˜zโ€™.join(โ€˜Pythonโ€™) # โ€˜Pythonโ€™ ์‚ฌ์ด์— โ€˜ zโ€™ ๋ฌธ์ž ๋ผ์›Œ ๋„ฃ๊ธฐโ€˜Pzyztzhzoznโ€™

๊ทธ ๋ฐ–์˜ ๋ฌธ์ž์—ด ํ•จ์ˆ˜๋“ค

Page 31: Python datatype

String Types

๋‹ค ์™ธ์šธ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค .

ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ฐพ์•„์“ฐ์„ธ์š” .์ €๋„ ๋‹ค ๋ชฐ๋ผ์š”

Page 32: Python datatype

Input & Output

ํ‘œ์ค€ ์ž…๋ ฅ : input(โ€˜ ์งˆ๋ฌธ ๋‚ด์šฉโ€™ )

>>> deadline = input(โ€˜ ์–‘์šฑ์”จ ํ†ต๊ธˆ์ด ๋ช‡์‹œ์—์š” ?โ€™)โ€˜ ์–‘์šฑ์”จ ํ†ต๊ธˆ์ด ๋ช‡์‹œ์—์š” ?โ€™ 11 ์‹œ 30 ๋ถ„์ž…๋‹ˆ๋‹ค>>> deadlineโ€˜11 ์‹œ 30 ๋ถ„์ž…๋‹ˆ๋‹คโ€™input ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์€ ๋ฌด์กฐ๊ฑด str ์ž…๋‹ˆ๋‹ค !

>>> num = input(โ€˜ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”โ€™ )์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” 3>>> numโ€˜3โ€™>>> type(num)<class โ€˜strโ€™>

Page 33: Python datatype

Input & Output

ํ‘œ์ค€ ์ถœ๋ ฅ : print( ์ถœ๋ ฅ๋‚ด์šฉ , end=โ€˜\nโ€™)>>> print(โ€˜โ€™Life is goodโ€)Life is goodํฐ๋”ฐ์˜ดํ‘œ (โ€œ) ๋กœ ๋‘˜๋Ÿฌ ์‹ธ์ธ ๋ฌธ์ž์—ด์€ + ์™€ ๋™์ผ , ๋„์–ด ์“ฐ๊ธฐ๋Š” ์ฝค๋งˆ (,) ๋กœ ํ•œ๋‹ค>>> print(โ€œLifeโ€ โ€isโ€ โ€goodโ€)Lifeisgood>>> print(โ€œLifeโ€+โ€isโ€ +โ€goodโ€)Lifeisgood>>> print(โ€œLifeโ€, โ€isโ€, โ€goodโ€)Life is good๋„์–ด ์“ฐ๊ธฐ๋Š” ์ฝค๋งˆ (,) ๋กœ ํ•œ๋‹ค>>> for i in range(10):โ€ฆ print(i, end=โ€œ โ€œ)0 1 2 3 4 5 6 7 8 9

Page 34: Python datatype

Mutable vs Immutable

Mutable : ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐํ˜•Immutable : ๋ณ€ํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐํ˜• , ๋ณ€ํ•  ์ˆ˜ ์—†์œผ๋‹ˆ ์ƒˆ๋กœ ์ƒ์„ฑ !

>>> hello = โ€œ ์•ˆ๋…•ํ•˜์„ธ์š”โ€>>> a = id(hello)>>> hello = โ€œ ๋ฐ˜๊ฐ’์Šต๋‹ˆ๋‹คโ€>>> a == id(hello) # ์‹๋ณ„์ž๊ฐ€ ๋‹ค๋ฅด๋‹ค !!False

Immutable ์˜ˆ์ œ

hello ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉ”๋ชจ๋ฆฌ์— ์ƒˆ๋กœ์šด ๊ณต๊ฐ„์„ ์ƒ์„ฑํ•œ๋‹ค์Œ์— ๊ทธ๊ณณ์— ๊ฐ’์„ ๋ณต์‚ฌํ•œ ๊ฒƒ !

Page 35: Python datatype

Mutable vs Immutable

>>> hello_list = [โ€˜hiโ€™]>>> a = id(hello_list)>>> hello_list[0] = [โ€˜helloโ€™]>>> a == id(hello_list) # ์‹๋ณ„์ž๊ฐ€ ๊ฐ™์Œ !True

Mutable ์˜ˆ์ œ

hello_list[0] ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝ

Mutable Immutable๋ฆฌ์ŠคํŠธํ˜• (list)์‚ฌ์ „ํ˜• (dict)์ง‘ํ•ฉํ˜• (set)๋ฐ”์ดํŠธ ๋ฐฐ์—ดํ˜• (byte array)

์ˆซ์žํ˜• (numbers) : int, float, com-plex๋ฌธ์ž์—ดํ˜• (string)ํŠœํ”Œํ˜• (tuple)๋ถˆํŽธ์ง‘ํ•ฉํ˜• (frozenset)๋ฐ”์ดํŠธํ˜• (bytes)

๊ธฐ์–ตํ•ด๋‘์„ธ์š” !!!!!!!!

Page 36: Python datatype

Data Structure

โ€ข ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉ ๋ฐฉ์‹์— ๋”ฐ๋ผ ์กฐ๊ธˆ ๋” ํšจ์œจ์ ์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํ“จํ„ฐ์— ์ €์žฅํ•˜๋Š” ์—ฌ๋Ÿฌ๋ฐฉ๋ฒ•โ€ข ๋ฆฌ์ŠคํŠธํ˜• (List Type)โ€ข ํŠœํ”Œํ˜• (Tuple Type)โ€ข ์„ธํŠธํ˜• (Set Type)โ€ข ์‚ฌ์ „ํ˜• (Dictionary Type)

Page 37: Python datatype

List Type

โ€ข ํ•˜๋‚˜์˜ ์ง‘ํ•ฉ ๋‹จ์œ„๋กœ ๋™์ผํ•œ ๋ณ€์ˆ˜์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅโ€ข ๋ฐฐ์—ด (Array) ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•จโ€ข [] ๋กœ ์„ ์–ธ>>> pockets = [4, 6, 1, 9]

4 6 1 9๋ฆฌ์ŠคํŠธ pockets :

์–‘์ˆ˜ index [0] [1] [2] [3]

์Œ์ˆ˜ index [-4] [-3] [-2] [-1]

Page 38: Python datatype

List Type

โ€ข ํ€ด์ฆˆ !>>> pockets = [4, 6, 1, 9]

1. pockets[0]

2. pockets[3]

3. pockets[4]

4. pockets[-1]

5. len(pockets)

6. type(pockets)

Page 39: Python datatype

List Type

โ€ข ์ •๋‹ต>>> pockets = [4, 6, 1, 9]

1. pockets[0] > 4

2. pockets[3] > 9

3. pockets[4] > IndexError : list index out of range

4. pockets[-1] > 9

5. len(pockets) > 4

6. type(pockets) > <class โ€˜listโ€™>

Page 40: Python datatype

List Type

โ€ข ๋ฆฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ>>> pockets = [4, 6, 1, 9]>>> pockets[0] = 3>>> pockets[3, 6, 1, 9]๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ ์ถ”๊ฐ€ : append(value)

>>> pockets.append(7)>>> pockets[3, 6, 1, 9, 7]

๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ ์‚ญ์ œ : remove(value)

>>> pockets.remove(1)>>> pockets[3, 6, 9, 7]

๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ ์‚ฝ์ž… : insert(idx, val)

>>> pockets.insert(1,2)>>> pockets[3, 2, 6, 1, 9, 7]

๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ ์ถ”์ถœ : pop(idx)

>>> pockets.pop(3)1>>> pockets[3, 2, 6, 9, 7]

Page 41: Python datatype

List Type

โ€ข ๋ฆฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ž๋ฅด๊ธฐ๋ณ€์ˆ˜๋ช… [ start : end ] - ๋ฆฌ์ŠคํŠธ์˜ start ์ธ๋ฑ์Šค ~ end-1 ์ธ๋ฑ์Šค ๊นŒ์ง€ - start, end ์ƒ๋žต ๊ฐ€๋Šฅ>>> pockets = [4, 6, 1, 9]>>> pockets[1:3][6, 1]>>> pockets[:3][4, 6, 1]>>> pockets[-2:][1, 9]>>> pockets[:][4, 6, 1 ,9]

Page 42: Python datatype

List Type

โ€ข ๋ฆฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ= vs [:]

>>> pockets = [4, 6, 1, 9]>>> pockets_copy = pock-ets>>> pockets_copy[4, 6, 1, 9]ํ€ด์ฆˆ !!

>>> pockets_copy.append(3)>>> pockets_copy[4, 6, 1, 9 ,3]>>> pockets # ๊ฒฐ๊ณผ๊ฐ’ ??

>>> pockets = [4, 6, 1, 9]>>> pockets_copy = pock-ets[:]>>> pockets_copy[4, 6, 1, 9]

Page 43: Python datatype

List Type

โ€ข ๋ฆฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ์ •๋‹ต !

์ •๋ฆฌ pockets_copy = pockets ๋Š” ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐ pockets_copy = pockets[:] ๋Š” ๊ฐ’์„ ๋ณต์‚ฌ

>>> pockets[4, 6, 1, 9 ,3]>>> id(pockets) == id(pockets_copy)True

>>> pockets[4, 6, 1, 9]>>> id(pockets) == id(pockets_copy)False

Page 44: Python datatype

List Type

โ€ข ๋ฆฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ ํ•ฉ์น˜๊ธฐ & ํ™•์žฅํ•˜๊ธฐ

๋ฆฌ์ŠคํŠธ ํ™•์žฅํ•˜๊ธฐ>>> a.extend(b)>>> a # a ๋’ค์— b ๊ฐ€ ๋ถ™๋Š”๋‹ค[1, 2 ,3 ,4 ,5 ,6]

>>> a = [1, 2, 3]>>> b = [4, 5, 6]>>> c = a + b # ์ƒˆ๋กœ ์ƒ์„ฑ๋œ๋‹ค !>>> c[1, 2, 3, 4, 5 , 6]

Page 45: Python datatype

List Type

โ€ข ๋ฆฌ์ŠคํŠธ ์‚ญ์ œdel() ํ•จ์ˆ˜ ์‚ฌ์šฉ>>> a = [1, 2, 3, 4, 5, 6]>>> del a[0]>>> a[2, 3, 4, 5, 6]>>> del a[1:3]>>> a[2, 5 ,6]>>> del a[:]>>> a[]>>> del a>>> aNameError: name โ€˜aโ€™ is not defined

Page 46: Python datatype

List Type

โ€ข ๋ฆฌ์ŠคํŠธ ๋‹ค์–‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ๋ฆฌ์ŠคํŠธ์•ˆ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ํƒ€์ž… ํ˜ผ์šฉ ๊ฐ€๋Šฅ>>> many_type = [โ€˜ ๊ฑดํฌโ€™ , โ€˜je_jangโ€™, 100, 3.14 ]

์ค‘์ฒฉ ๋ฆฌ์ŠคํŠธ ์‚ฌ์šฉ ๊ฐ€๋Šฅ>>> many_type = [โ€˜ ๊ฑดํฌโ€™ , โ€˜je_jangโ€™, 100, 3.14 ]>>> nested_list = [ [1, 2, 3, 4], many_type , [5, 6, 7, 8]>>> nested_list[1][1]โ€˜je_jangโ€™>>> nested_list[2][3]8

Page 47: Python datatype

Tuple Typeโ€ข Immutale ํ•œ ๋ฆฌ์ŠคํŠธํ˜•โ€ข ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐํ˜•์„ ํŒจํ‚น ์–ธํŒจํ‚น ํ•  ๋•Œ ์‚ฌ์šฉโ€ข ์ถ”๊ฐ€ , ์‚ญ์ œ , ์ž๋ฅด๊ธฐ ๋ถˆ๊ฐ€๋Šฅ !โ€ข () ๋กœ ์ƒ์„ฑ , but ์ƒ๋žต ๊ฐ€๋Šฅ>>> landvibe = โ€˜ ๋ฏผ์Šนโ€™ , 1993, โ€˜ ์šฐ๊ณคโ€™ , 1993 # () ๊ด„ํ˜ธ ์ƒ๋žต๊ฐ€๋Šฅ>>> landvibe(โ€˜ ๋ฏผ์Šนโ€™ , 1993, โ€˜ ์šฐ๊ณคโ€™ , 1993)>>> landvibe[0] # ๋ฆฌ์ŠคํŠธ์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค ๊ธฐ๋Šฅ ์‚ฌ์šฉ ๊ฐ€๋Šฅโ€˜ ๋ฏผ์Šนโ€™>>> landvibe[1:3](1993, โ€˜ ์šฐ๊ณคโ€™ , 1993)

Page 48: Python datatype

Tuple Type

>>> landvibe = (โ€˜ ๋ฏผ์Šนโ€™ , 1994, โ€˜ ์šฐ๊ณคโ€™ , 1994)>>> landvibe(โ€˜ ๋ฏผ์Šนโ€™ , 1994, โ€˜ ์šฐ๊ณคโ€™ , 1994)>>> landvibe[0] = โ€˜ ๊ฑดํฌโ€™TypeError: โ€˜tupleโ€™ object does not support item ass-ginment

Tuple ์€ Immutable ํ•ฉ๋‹ˆ๋‹ค !

>>> landvibe = [โ€˜ ๋ฏผ์Šนโ€™ , 1994], [โ€˜ ์šฐ๊ณคโ€™ , 1994]>>> landvibe([โ€˜ ๋ฏผ์Šนโ€™ , 1994], [โ€˜ ์šฐ๊ณคโ€™ , 1994])>>> landvibe[1][0] = โ€˜ ๊ฑดํฌโ€™

์—ฌ๊ธฐ์„œ ํ€ด์ฆˆ !!!

๊ฒฐ๊ณผ๋Š” !?!?!?

Page 49: Python datatype

Tuple Type

>>> landvibe = [โ€˜ ๋ฏผ์Šนโ€™ , 1994], [โ€˜ ์šฐ๊ณคโ€™ , 1994]>>> landvibe([โ€˜ ๋ฏผ์Šนโ€™ , 1994], [โ€˜ ์šฐ๊ณคโ€™ , 1994])>>> landvibe[1][0] = โ€˜ ๊ฑดํฌโ€™>>> landvibe ([โ€˜ ๋ฏผ์Šนโ€™ , 1994], [โ€˜ ๊ฑดํฌโ€™ , 1994])

์ •๋‹ต !

List ๋Š” Mutable ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค !

Page 50: Python datatype

Tuple Type

>>> empty = ()>>> empty1 = tuple()>>> type(empty)<class โ€˜tupleโ€™>>>> len(empty)0>>> type(empty1)<class โ€˜tupleโ€™>>>> len(empty1)0>>> single = โ€œ ๊ฑดํฌโ€ , # , ์— ์ฃผ๋ชฉํ•˜์ž>>> type(single)<class โ€˜tupleโ€™>>>> len(single)1

๋นˆํŠœํ”Œ , ํ•˜๋‚˜์˜ ํ•ญ๋ชฉ๋งŒ ์žˆ๋Š” ํŠœํ”Œ ์ƒ์„ฑ์‹œ ์ฃผ์˜์‚ฌํ•ญ

Page 51: Python datatype

Tuple Type

>>> landvibe = โ€˜ ๋ฏผ์Šนโ€™ , 1994, โ€˜ ์šฐ๊ณคโ€™ , 1994# ์ด๊ฒŒ ํŒจํ‚น>>> a, b, c, d = landvibe # ์ด๊ฒŒ ์–ธํŒจํ‚น>>> aโ€˜ ๋ฏผ์Šนโ€™>>>b1994

ํŒจํ‚น vs ์–ธํŒจํ‚น

ํ˜•๋ณ€ํ™˜ - list(), tuple() ํ•จ์ˆ˜ ์‚ฌ์šฉ>>> landvibe_list= list(landvibe)>>> type(landvibe_list)<class โ€˜listโ€™>>>> landvibe_tuple = tuple(landvibe_list)<class โ€˜tupleโ€™>

Page 52: Python datatype

Set Typeโ€ข Mutable ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐโ€ข Index, ์ˆœ์„œ๊ฐ€ ์—†์Œโ€ข ์ค‘๋ณต์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Œโ€ข {} ๋กœ ์ƒ์„ฑ>>> landvibe = {โ€˜ ์–‘์šฑโ€™ , โ€˜ ์„ฑํ˜„โ€™ , โ€˜ ์žฌํ˜•โ€™ , โ€˜ ์–‘์šฑโ€™ , โ€™ ์„ฑํ˜„โ€™ }>>> landvibe{โ€˜ ์–‘์šฑโ€™ , โ€˜ ์„ฑํ˜„โ€™ , โ€˜ ์žฌํ˜•โ€™ }

ํ•ญ๋ชฉ ์กด์žฌ ์œ ๋ฌด ํ™•์ธ>>> โ€˜ ์–‘์šฑโ€™ in landvibeTrue>>> โ€˜ ๋ฉ”์‹œโ€™ in landvibeFalse

Page 53: Python datatype

Set Type

>>> landvibe = {โ€˜ ์–‘์šฑโ€™ , โ€˜ ์„ฑํ˜„โ€™ , โ€˜ ์žฌํ˜•โ€™ }>>> landvibe.add(โ€˜ ์ฃผ์•„โ€™ )>>> landvibe{โ€˜ ์–‘์šฑโ€™ , โ€˜ ์„ฑํ˜„โ€™ , โ€˜ ์žฌํ˜•โ€™ , โ€˜ ์ฃผ์•„โ€™ }

ํ•ญ๋ชฉ์ถ”๊ฐ€ : add()

>>> landvibe.update(โ€œ ๊ฑดํฌโ€ , โ€œ ๊ทœ์ •โ€ )>>> landvibe{โ€˜ ์–‘์šฑโ€™ , โ€˜ ์„ฑํ˜„โ€™ , โ€˜ ์žฌํ˜•โ€™ , โ€˜ ์ฃผ์•„โ€™ , โ€˜ ๊ฑดํฌโ€™ , โ€˜ ๊ทœ์ •โ€™ }

ํ•ญ๋ชฉ ์—ฌ๋Ÿฌ๊ฐœ ์ถ”๊ฐ€ : update()

>>> landvibe.remove(โ€˜ ์–‘์šฑโ€™ )>>> landvibe{โ€˜ ์„ฑํ˜„โ€™ , โ€˜ ์žฌํ˜•โ€™ , โ€˜ ์ฃผ์•„โ€™ , โ€˜ ๊ฑดํฌโ€™ , โ€˜ ๊ทœ์ •โ€™ }

ํ•ญ๋ชฉ ์‚ญ์ œ : remove()

Page 54: Python datatype

Set Type

>>> landvibe = set(โ€˜laaaaandviiibeโ€™)>>> landvibe{โ€˜lโ€™, โ€˜aโ€™, โ€˜nโ€™, โ€˜dโ€™, โ€˜vโ€™, โ€˜iโ€™, โ€˜bโ€™, โ€˜eโ€™}

ํ•ฉ์ง‘ํ•ฉ , ๊ต์ง‘ํ•ฉ , ์ฐจ์ง‘ํ•ฉ , ์—ฌ์ง‘ํ•ฉ>>> a = { 1, 2, 3, 4 }>>> b = { 3, 4, 5, 6 }>>> a-b # ์ฐจ์ง‘ํ•ฉ{1, 2}>>> a | b # ํ•ฉ์ง‘ํ•ฉ{ 1, 2, 3, 4, 5, 6}>>> a & b # ๊ต์ง‘ํ•ฉ{ 3, 4}>>> a ^ b # ์—ฌ์ง‘ํ•ฉ{1, 2, 5 ,6}

์ค‘๋ณต๋ฌธ์ž ์ œ๊ฑฐ

Page 55: Python datatype

Dictionary Typeโ€ข Mutable ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐโ€ข Map ์˜ ๊ตฌํ˜„์ฒดโ€ข Key, Value ์Œ์œผ๋กœ ํ•˜๋‚˜์˜ ๋…ธ๋“œ๊ฐ€ ๊ตฌ์„ฑ๋œ๋‹คโ€ข Key ๋Š” ์ค‘๋ณต ๋ถˆ๊ฐ€ , Key ๋“ค์˜ ์ง‘ํ•ฉ์€ Set ์˜ ์„ฑ์งˆ์„ ๊ฐ€์งโ€ข {key:value} ๋กœ ์ƒ์„ฑ>>> landvibe = {โ€˜ ์–‘์šฑโ€™ : 97, โ€˜ ๊ทœ์ •โ€™ :92}>>> landvibe{โ€˜ ์–‘์šฑโ€™ : 97, โ€˜ ๊ทœ์ •โ€™ :92}>>> type(landvibe)<class โ€˜dictโ€™>>>> len(landvibe)2

Page 56: Python datatype

Dictionary Type

>>> landvibe = {โ€˜ ์–‘์šฑโ€™ : 97, โ€˜ ๊ทœ์ •โ€™ :92}>>> landvibe[โ€˜ ์ค€์˜คโ€™ ] = 94>>> landvibe{โ€˜ ์–‘์šฑโ€™ : 97, โ€˜ ๊ทœ์ •โ€™ :92, โ€˜ ์ค€์˜คโ€™ :94}>>> del landvibe[โ€˜ ๊ทœ์ •โ€™ ]>>> landvibe{โ€˜ ์–‘์šฑโ€™ : 97, โ€˜ ์ค€์˜คโ€™ :94}>>> landvibe[โ€˜ ์ค€์˜คโ€™ ] = 95{โ€˜ ์–‘์šฑโ€™ : 97, โ€˜ ์ค€์˜คโ€™ :95}

์ถ”๊ฐ€ , ์‚ญ์ œ , ๋ณ€๊ฒฝ : dict_name[key]=value

Page 57: Python datatype

Dictionary Type

>>> landvibe = {โ€˜ ์–‘์šฑโ€™ : 97, โ€˜ ๊ทœ์ •โ€™ :92, โ€˜ ์ค€์˜คโ€™ : 95}>>> landvibe.keys()dict_keys([โ€˜ ์–‘์šฑโ€™ , โ€˜ ๊ทœ์ •โ€™ , โ€˜ ์ค€์˜คโ€™ ]) # set ์˜ ์„ฑ์งˆ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค>>> list(landvibe.keys()) # [index] ๋กœ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ[โ€˜ ์–‘์šฑโ€™ , โ€˜ ๊ทœ์ •โ€™ , โ€˜ ์ค€์˜คโ€™ ]>>> sorted(landvibe.keys())[โ€˜ ๊ทœ์ •โ€™ , โ€˜ ์–‘์šฑโ€™ , โ€˜ ์ค€์˜คโ€™ ]

key ์ถ”์ถœ : keys()

>>> list(landvibe.values())[97, 92, 95]

value ์ถ”์ถœ : values()

Page 58: Python datatype

Dictionary Type

>>> landvibe = {โ€˜ ์–‘์šฑโ€™ : 97, โ€˜ ๊ทœ์ •โ€™ :92, โ€˜ ์ค€์˜คโ€™ : 95}>>> โ€˜ ์–‘์šฑโ€™ in landvibeTrue>>> โ€˜ ์ง„ํ™โ€™ not in landvibeTrue

ํ‚ค ์กด์žฌ , ๋ˆ„๋ฝ ์œ ๋ฌด ํ™•์ธ

>>> landvibe = dict( [ (โ€˜ ์–‘์šฑโ€™ , 97), (โ€˜ ๊ทœ์ •โ€™ , 92), (โ€˜ ์ค€์˜คโ€™ , 95) ] )>>> landvibe{โ€˜ ์–‘์šฑโ€™ : 97, โ€˜ ๊ทœ์ •โ€™ :92, โ€˜ ์ค€์˜คโ€™ : 95}>>> landvibe = dict( ์–‘์šฑ =97, ์ค€์˜ค =95)>>> landvibe{โ€˜ ์–‘์šฑโ€™ : 97, โ€˜ ์ค€์˜คโ€™ : 95}

ํ˜• ๋ณ€ํ™˜ : dict( list( tuple(key,value) ) )

Page 59: Python datatype

๋

์ˆ˜๊ณ  ํ•˜์…จ์Šต๋‹ˆ๋‹ค .์˜ค๋Š˜์€ ์ˆ™์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค .