πŸ“š μŠ€ν„°λ””/파이썬 μŠ€ν„°λ”” κ°•μ˜μžλ£Œ

[3νŒ€/김경은] 2μ°¨μ‹œ 파이썬 μŠ€ν„°λ”” - μžλ£Œν˜•

경은 2023. 3. 15. 23:34

데이터 과학을 μœ„ν•œ 파이썬 ν”„λ‘œκ·Έλž˜λ° ꡐ재λ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘μ„±ν•œ κ°•μ˜μžλ£Œμž…λ‹ˆλ‹€.

2μ°¨μ‹œ_μžλ£Œν˜•_κ°•μ˜μ•ˆ.pdf
0.43MB
2μ°¨μ‹œ_μžλ£Œν˜•_과제.pdf
0.85MB

μžλ£Œν˜•

 

λ©”λͺ¨λ¦¬

  • λ©”λͺ¨λ¦¬λŠ” λ§Žμ€ λ°©λ“€λ‘œ 이루어져 있으며 각 λ°©λ§ˆλ‹€ ν•˜λ‚˜μ˜ 자료λ₯Ό μ €μž₯

λ³€μˆ˜

  • λ©”λͺ¨λ¦¬ λ°©λ§ˆλ‹€ λΆ€μ—¬ν•œ 이름
  • μ–΄λ– ν•œ 값을 μ €μž₯ν•˜λŠ” μž₯μ†Œ

λ³€μˆ˜μ— 데이터 μ €μž₯

    • 데이터λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•΄ ν• λ‹Ή μ—°μ‚°μž (=) μ‚¬μš©
    • ν• λ‹Ή μ—°μ‚°μž ‘=’λŠ” 였λ₯Έμͺ½μ˜ 것을 μ™Όμͺ½μ˜ λ³€μˆ˜μ— λŒ€μž…ν•˜λΌλŠ” 뜻
      • λŒ€μž… μ—°μ‚°μžμ˜ μ™Όμͺ½μ—λŠ” 무쑰건 λ³€μˆ˜λ§Œ 올 수 있음
      • λŒ€μž… μ—°μ‚°μžμ˜ 였λ₯Έμͺ½μ—λŠ” 무엇이든(κ°’, λ³€μˆ˜, μˆ˜μ‹, ν•¨μˆ˜ λ“±) 올 수 있음
      >>> major = "Data Sience"
      >>> print(major)
      Data sience
      μ €μž₯된 데이터λ₯Ό 좜λ ₯ν•˜κΈ° μœ„ν•΄ print(λ³€μˆ˜λͺ…)을 μž…λ ₯

“major λΌλŠ” 곡간에 Data Sience λΌλŠ” κΈ€μžλ₯Ό 넣어라.”둜 해석

 

λ³€μˆ˜μ™€ κ°’

>>> a = 5
>>> b = 10
>>> print(a+b)
15

>>> a = 5
>>> b = 10
>>> print("a+b")
a+b
  •  
  • λ”°μ˜΄ν‘œμ˜ μ‚¬μš© 여뢀에 λ”°λ₯Έ 의미 차이

       μ½”λ“œ                                 μ˜λ―Έ

print(a+b) a λ³€μˆ˜μ— μžˆλŠ” κ°’κ³Ό bλ³€μˆ˜μ— μžˆλŠ” 값을 더해 화면에 좜λ ₯ν•˜λΌ
print(”a+b”) “a+b”λΌλŠ” 문자λ₯Ό κ·ΈλŒ€λ‘œ 화면에 좜λ ₯ν•˜λΌ

 

λ³€μˆ˜μ˜ νŠΉμ§•

  • λ³€μˆ˜μ— μ €μž₯된 λ°μ΄ν„°λŠ” μ–Έμ œλ“ μ§€ λ°”λ€” 수 있고 μƒˆλ‘œμš΄ 데이터가 μ €μž₯되면 과거의 λ°μ΄ν„°λŠ” 사라짐
  • ν• λ‹Ή μ—°μ‚°μž ’=’λ₯Ό μ΄μš©ν•΄μ„œ μƒˆλ‘œμš΄ 데이터 μ €μž₯
>>> myAlphabet = 'A'
>>> print(myAlphabet)
A
>>> myAlphabet = 'ABC'          #μƒˆλ‘œμš΄ 데이터
>>> print(myAlphabet)
ABC

λ³€μˆ˜λͺ… κ·œμΉ™

1 - λ³€μˆ˜μ˜ 이름은 문자, 숫자, Underscore(_)둜만 이루어짐 - λ‹€λ₯Έ 기호λ₯Ό μ‚¬μš©ν•˜λ©΄ ꡬ문 μ—λŸ¬(Syntax Error)
2 - λ³€μˆ˜λͺ…은 문자 λ˜λŠ” Underscore둜만 μ‹œμž‘ν•΄μ•Ό 함 - 즉, 숫자둜 μ‹œμž‘ν•˜λ©΄ μ•ˆλ¨
3 - νŒŒμ΄μ¬μ—μ„œλŠ” λŒ€λ¬Έμžμ™€ μ†Œλ¬Έμžλ₯Ό ꡬ뢄
4 - 파이썬 μ˜ˆμ•½μ–΄ (KeyWord, Reserved word)듀은 λ³€μˆ˜λͺ…μœΌλ‘œ μ‚¬μš© λΆˆκ°€

파이썬 μ˜ˆμ•½μ–΄ ( λ³€μˆ˜μ˜ μ΄λ¦„μœΌλ‘œ 올 수 μ—†λ‹€.)

>>> import keyword
>>> print(keyword.kwlist)
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 
'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 
'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 
'raise', 'return', 'try', 'while', 'with', 'yield']

[μ°Έκ³ ]

import

  • ‘μˆ˜μž…ν•˜λ‹€’, ‘κ°€μ Έμ˜€λ‹€’의 뜻으둜 λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨μ—μ„œ 데이터λ₯Ό κ°–κ³ μ˜€λŠ”κ²ƒμ„ μ˜λ―Έν•œλ‹€. import λ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ¨λ“ˆμ„ κ°€μ Έμ˜¬ 수 μžˆλ‹€.

 

μžλ£Œν˜•μ΄λž€?

  • 자료의 ν˜•μ‹
  • 자료 : μ–΄λ–€ λ¬Όμ²΄λ‚˜ ν˜„μƒμ„ μΈ‘μ •ν•˜κ±°λ‚˜ κ΄€μ°°ν•˜μ—¬ 얻어진 κ°’
  • 자료의 νŠΉμ„± : μ •ν™•ν•œ 자료
  •                       ν•„μš”ν•  λ•Œ μ–Έμ œλ“ μ§€ μˆ˜μ • κ°€λŠ₯
                          μ‚¬μš© λͺ©μ μ— 따라 λ‹€λ₯Έ ν˜•νƒœλ‘œ 가곡 κ°€λŠ₯

πŸ’‘ μžλ£Œν˜•μ€ 자료λ₯Ό κΈ°λŠ₯κ³Ό 역할에 따라 κ΅¬λΆ„ν•œ κ²ƒμœΌλ‘œ 데이터 νƒ€μž…μ„ 의미

 

λ³€μˆ˜κ°€ μ–΄λ–€ ν˜•νƒœμ˜ 데이터λ₯Ό μ €μž₯ν•˜λŠ”κ°€

  • 숫자 : 물건의 가격, ν•™μƒμ˜ 성적
  • λ¬Έμžμ—΄ : 메일 제λͺ©, λ©”μ‹œμ§€ λ‚΄μš©
  • 뢈 : 둜그인 μƒνƒœ

μžλ£Œν˜• 확인 방법

  • type() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄ 데이터 νƒ€μž… 확인 κ°€λŠ₯

μžλ£Œν˜•

  • μˆ«μžλ°μ΄ν„° : μ •μˆ˜ν˜•, μ‹€μˆ˜ν˜•
    • μ •μˆ˜ν˜• : μžμ—°μˆ˜λ₯Ό 포함해 0,1,2,-1,-2와 같이 κ°’μ˜ μ˜μ—­μ΄ μ •μˆ˜λ‘œ ν•œμ •λœ κ°’
    • data=1κ³Ό 같은 λ°©μ‹μœΌλ‘œ μ„ μ–Έ 파이썬의 인터프리터가 μ•Œμ•„μ„œ λ©”λͺ¨λ¦¬ μ˜μ—­μ— ν•„μš”ν•œ 곡간을 확보 μ–‘μ˜ μ •μˆ˜μ™€ 음의 μ •μˆ˜, 숫자 0λ₯Ό ν¬ν•¨ν•œλ‹€. interger(μ •μˆ˜)의 int둜 λ‚˜νƒ€λƒ„
    >>> a = 123
    >>> a = -178
    >>> a = 0
    • μ‹€μˆ˜ν˜• : λΆ€λ™μ†Œμˆ˜μ μœΌλ‘œ 10.2, 7.2와 같이 μ†Œμˆ˜μ μ΄ ν¬ν•¨λœ κ°’
    • 값이 μ •μˆ˜ν˜•μ΄λΌλ„ λΆ€λ™μ†Œμˆ˜μ μ€ μΈν„°ν”„λ¦¬ν„°λŠ” μ‹€μˆ˜ν˜•μœΌλ‘œ 해석 floating(μ‹€μˆ˜)의 float둜 λ‚˜νƒ€λƒ„
    >>> a = 1.2
    >>> a = -3.45
    
    λΆ€λ™μ†Œμˆ˜μ  : μ»΄ν“¨ν„°μ—μ„œ μ‹€μˆ˜λ₯Ό ν‘œμ‹œν•˜λŠ” λ°©λ²•μœΌλ‘œ μœ νš¨μˆ«μžμ™€ μ†Œμˆ˜μ μ˜ μœ„μΉ˜λ₯Ό μ‚¬μš©ν•΄ μ‹€μˆ˜λ₯Ό ν‘œν˜„
  • μ†Œμˆ˜μ  16번째 μžλ¦¬κΉŒμ§€λ§Œ λ‚˜νƒ€λ‚¨
    • 데이터 νƒ€μž…
    >>> a=3
    >>> type(a)
    <class 'int'>
    
    >>> b=3.5
    >>> type(b)
    <class 'float'>
    
  • >>> num=3.1234567890123456789012345678901234567890 >>> print(num) 3.1234567890123457

 

λ¬Έμžλ°μ΄ν„° : λ¬Έμžν˜•

  • κ°’μ΄λ¬Έμžλ‘œ 좜λ ₯λ˜λŠ” μžλ£Œν˜•μœΌλ‘œ λ”°μ˜΄ν‘œμ— λ“€μ–΄κ°„ 정보
a=5
b=10

>>> print(a+b)
15
>>> print("a+b")
a+b
  • 데이터 νƒ€μž…
    >>> print(type("μ•ˆλ…•ν•˜μ„Έμš”"))
    <class 'str'>
    ​

뢈 데이터 : 뢈린

 

  • μ°Έ λ˜λŠ” 거짓을 ν‘œν˜„ν•  λ•Œ μ‚¬μš©
  • μ°Έμ΄λ‚˜ κ±°μ§“λ§Œ μ €μž₯ν•˜λ©° λ‹¨λ…μœΌλ‘œ μ‚¬μš©ν•˜κΈ°λ³΄λ‹€ μ‘°κ±΄λ¬Έμ΄λ‚˜ 반볡문 λ“±κ³Ό ν•¨κ»˜ 주둜 μ‚¬μš©
>>> print(type(True))
<class 'bool'>

 

κΈ°λ³Έ μžλ£Œν˜•

μœ ν˜•                  μžλ£Œν˜•                      μ„€λͺ…                                                                       μ˜ˆ                           μ„ μ–Έ ν˜•νƒœ

μˆ˜μΉ˜ν˜• μ •μˆ˜ν˜• μ–‘μˆ˜μ™€ μ •μˆ˜ 1,2,3,100,-9 data =1
μˆ˜μΉ˜ν˜• μ‹€μˆ˜ν˜• μ†Œμˆ˜μ μ΄ ν¬ν•¨λœ μ‹€μˆ˜ 10.2,-9.3,9.0 data=9.0
λ¬Έμžν˜• λ¬Έμžν˜• λ”°μ˜΄ν‘œμ— λ“€μ–΄κ°€ μžˆλŠ” λ¬Έμžν˜• abc,a20abc data=’abc’
λ…Όλ¦¬ν˜• λΆˆλ¦°ν˜• μ°Έ λ˜λŠ” 거짓 True, False data=True

μžλ£Œν˜• ν™•μΈν•˜κΈ°

  • λΉˆμΉΈμ— λ“€μ–΄κ°ˆ μžλ£Œν˜• μ˜ˆμƒν•΄λ³΄κΈ°
>>> type('Hello Python')
<class '      '>
>>> type(123)
<class '      '>
>>> type(3.14)
<class '      '>
>>> type(True)
<class '      '>

 

μ •λ‹΅

  • str, int, float, bool

 

μ—°μ‚°

λ‹€μ–‘ν•œ μžλ£Œν˜•μ„ μ‚¬μš©ν•΄ κ°„λ‹¨ν•œ μ—°μ‚° κ°€λŠ₯

μ—°μ‚°μžμ™€ ν”Όμ—°μ‚°μžλ‘œ ꡬ뢄

  • μ—°μ‚°μž : 연산을 λ‚˜νƒ€λ‚΄λŠ” 기호 (+,-,*,/)
  • ν”Όμ—°μ‚°μž : μ—°μ‚°μ˜ λŒ€μƒμ΄ λ˜λŠ” κ°’

사칙연산

  • 파이썬 λ§μ…ˆ μ—°μ‚°μž → (+)
  • 파이썬 λΊ„μ…ˆ μ—°μ‚°μž → (-)
  • 파이썬 κ³±μ…ˆ μ—°μ‚°μž → (*)
  • 파이썬 λ‚˜λˆ—μ…ˆ μ—°μ‚°μž → (/)

 

μ‚°μˆ μ—°μ‚°μž

μ—°μ‚°μž    의미                            μ‚¬μš© 예          μ„€λͺ…

= λŒ€μž… μ—°μ‚°μž a=3 μ •μˆ˜ 3을 a 에 λŒ€μž…
+ λ”ν•˜κΈ° a=5+3 5와 3을 λ”ν•œ 값을 a에 λŒ€μž…
- λΉΌκΈ° a=5-3 5μ—μ„œ 3을 λΊ€ 값을 a에 λŒ€μž…
* κ³±ν•˜κΈ° a=5*3 5와 3을 κ³±ν•œ 값을 a에 λŒ€μž…
/ λ‚˜λˆ„κΈ° a=5/3 5λ₯Ό 3으둜 λ‚˜λˆˆ 값을 a에 λŒ€μž…
// λ‚˜λˆ„κΈ°(λͺ«) a=5//3 5λ₯Ό 3으둜 λ‚˜λˆˆ ν›„ μ†Œμˆ˜μ μ„ 버리고 값을 a에 λŒ€μž…
% λ‚˜λ¨Έμ§€ κ°’ a=5%3 5λ₯Ό 3으둜 λ‚˜λˆˆ ν›„ λ‚˜λ¨Έμ§€κ°’μ„ a에 λŒ€μž…
** 제곱 a=5**3 5의 3μ œκ³±μ„ a에 λŒ€μž…
  • λ‚˜λˆ—μ…ˆμ˜ λͺ«κ³Ό λ‚˜λ¨Έμ§€
  • λ‚˜λ¨Έμ§€,λͺ«,λ‚˜λ¨Έμ§€
    >>> print(7/2)          # 7 λ‚˜λˆ„κΈ° 2
    3.5
    >>> print(7//2)         # 7 λ‚˜λˆ„κΈ° 2의 λͺ«
    3
    >>> print(7%2)          # 7 λ‚˜λˆ„κΈ° 2의 λ‚˜λ¨Έμ§€
    1
    

λ‚˜λˆ—μ…ˆ μ£Όμ˜μ‚¬ν•­

  • λ‚˜λˆ—μ…ˆ κ²°κ³Όκ°’μ˜ μžλ£Œν˜•μ€ 항상 μ‹€μˆ˜ν˜•
>>> type(10/2)              # λ‚˜λ¨Έμ§€κ°€ μ—†λŠ” 경우  
<class 'float'>
>>> type(10/3)              # λ‚˜λ¨Έμ§€κ°€ μžˆλŠ” 경우
<class 'float'>
  • κ²°κ³Όκ°’μ˜ μžλ£Œν˜•μ΄ μ •μˆ˜ν˜•μ΄κΈΈ μ›ν•œλ‹€λ©΄ 직접 μžλ£Œν˜• λ³€ν™˜ ν•„μš”
  • λ‚˜λ¨Έμ§€κ°€ μžˆλŠ” κ²½μš°μ— μ†Œμˆ˜μ  μ΄ν•˜μ˜ 데이터 손싀

μžλ£Œν˜• λ³€ν™˜μ„ ν•˜μ§€ μ•Šμ€ 경우

>>> num1=10
>>> num2=3
>>> result = num1/num2
>>> result
3.333333333333335
>>> type(result)
<class 'float'>

μ •μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜μ„ ν•œ 경우

>>> num1=10
>>> num2=3
>>> result = int(num1/num2)       
# μžλ£Œν˜• λ³€ν™˜
>>> result
3     # μ†Œμˆ˜μ  μ΄ν•˜ 데이터 손싀
>>> type(result)
<class 'int'>

 

제곱승

파이썬 제곱승 μ—°μ‚°μž → (**)

>>> print(3*3*3*3*3)
243
>>> print(3**5)
243

 

μžλ£Œν˜• λ³€ν™˜

μžλ£Œν˜•μ„ 자유둭게 λ°”κΏ”κ°€λ©° μ‚¬μš©

  • μ •μˆ˜ν˜•κ³Ό μ‹€μˆ˜ν˜• κ°„ λ³€ν™˜
>>> a=5
>>> print(a)
5
>>> a=float(5)
>>> print(a)
5.0
>>> print(type(a))
<class 'float'>
>>> a=10
>>> b=3
>>> print(a/b)
3.3333333333333335
  • μ‹€μˆ˜ν˜•μ„ μ •μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜
>>> a=int(10.7)
>>> b=int(10.3)

>>> print(a+b)
20
>>> print(a)
10
>>> print(b)
10

ν˜• λ³€ν™˜μ„ ν•˜μ§€ μ•Šμ•„λ„ ν˜• λ³€ν™˜μ΄ μΌμ–΄λ‚˜λŠ” 경우

동적 타이핑 : λ³€μˆ˜μ˜ λ©”λͺ¨λ¦¬ 곡간을 ν™•λ³΄ν•˜λŠ” ν–‰μœ„κ°€ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ‹œμ μ—μ„œ λ°œμƒν•˜λŠ”κ²ƒ

C, Java - λ³€μˆ˜κ°€ μ •μˆ˜ν˜•μ΄λΌκ³  사전에 μ„ μ–Έ (ex. int data = 8)

Python - λ³€μˆ˜μ˜ μžλ£Œν˜•μ„ 인터프리터가 νŒλ‹¨ (ex. data = 8)

동적 νƒ€μ΄ν•‘μœΌλ‘œ λ‚˜νƒ€λ‚˜λŠ” ν˜„μƒ : κ°’μ˜ 크기 비ꡐ

  • λ¬Έμžν˜•μœΌλ‘œ μ„ μ–Έλœ κ°’μ˜ μ •μˆ˜ν˜• λ˜λŠ” μ‹€μˆ˜ν˜•μœΌλ‘œμ˜ λ³€ν™˜
>>> a = '76.3'
>>> b = float(a)
>>> print(a)
76.3
>>> print(b)
76.3
>>> print(a+b)
TypeError: can only concatenate str (not "float") to str

aλ₯Ό μ‹€μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜

>>> a=float(a)
>>> b=a
>>> print(a+b)
152.6

a,bλ₯Ό λ¬Έμžν˜•μœΌλ‘œ λ³€ν™˜

>>> a = str(a)
>>> b = str(b)
>>> print(a+b)
76.376.3

 

리슀트

ν”„λ‘œκ·Έλž˜λ°μ—μ„œ ν•œκ°œμ˜ λ³€μˆ˜μ— λͺ¨λ“ κ°’을 μ €μž₯ν•  수 μžˆλŠ” 방식을 일반적으둜 λ°°μ—΄, νŒŒμ΄μ¬μ—μ„œλŠ” 리슀트라고 함

ν•˜λ‚˜μ˜ λ³€μˆ˜μ— μ—¬λŸ¬ 값을 μ €μž₯ν•˜λŠ” μžλ£Œν˜•

파이썬 μ‹œν€€μŠ€ μžλ£Œν˜• : μ—¬λŸ¬ 자료λ₯Ό μˆœμ„œλŒ€λ‘œ λ„£λŠ”λ‹€λŠ” 뜻

λ¦¬μŠ€νŠΈμ—λŠ” ν•˜λ‚˜μ˜ μžλ£Œν˜•λ§Œ μ €μž₯ν•˜μ§€ μ•Šκ³  μ •μˆ˜ν˜•μ΄λ‚˜ μ‹€μˆ˜ν˜•μ²˜λŸΌ λ‹€μ–‘ν•œ μžλ£Œν˜•μ„ ν¬ν•¨μ‹œν‚¬ 수 있음

colors = [’red’, ‘blue’, ‘green’]

colors → 

‘red’   ‘blue’  ‘green’

 

인덱싱과 μŠ¬λΌμ΄μ‹±

  • 인덱싱

λ¦¬μŠ€νŠΈμ— μ €μž₯λ˜μ–΄ μžˆλŠ” 값에 μ ‘κ·Όν•˜κΈ° μœ„ν•΄ 이 κ°’μ˜ μƒλŒ€μ μΈ μ£Όμ†Œλ₯Ό μ‚¬μš©

μ£Όμ†ŒλŠ” 첫 번째 값을 0으둜 ν–ˆμ„ λ•Œ 첫 번째 κ°’κ³Ό μ–Όλ§ˆλ‚˜ λ–¨μ–΄μ Έ μžˆλŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 것

인덱슀 μ£Όμ†Œ λ˜λŠ” 인덱슀 값이라고 함

colors = ['red', 'blue', 'green']
print(colors[0])
print(colors[2])
print(len(colors))

>>> red
>>> green
>>> 3

리슀트의 μ£Όμ†Œκ°’μ΄ 0λΆ€ν„° μ‹œμž‘ν•˜λŠ” 이유

1λΆ€ν„° μ‹œμž‘ν•˜λŠ” 것보닀 0λΆ€ν„° μ‹œμž‘ν•˜λ©΄ μ΄μ§„μˆ˜ κ΄€μ μ—μ„œ λ©”λͺ¨λ¦¬λ₯Ό μ ˆμ•½ν•  수 μžˆλ‹€λŠ” μž₯점

μ§„μˆ˜μ—μ„œ 00λΆ€ν„° μ‚¬μš©ν•  수 μžˆλŠ” μž₯점

초창기 μ»΄ν“¨ν„°λŠ” λ©”λͺ¨λ¦¬ μ ˆμ•½μ΄ 맀우 μ€‘μš”ν–ˆλ‹€.

 

  • μŠ¬λΌμ΄μ‹±

λ¦¬μŠ€νŠΈμ—μ„œ νŒŒμƒλœ κ°•λ ₯ν•œ κΈ°λŠ₯ 쀑 ν•˜λ‚˜

리슀트의 인덱슀 κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ 전체 λ¦¬μŠ€νŠΈμ—μ„œ 일뢀λ₯Ό μž˜λΌλ‚΄μ–΄ μ‚¬μš©

>>> cities = ['μ„œμšΈ', 'λΆ€μ‚°', '인천', 'λŒ€κ΅¬', 'λŒ€μ „', 'κ΄‘μ£Ό', 'μšΈμ‚°', 'μˆ˜μ›']

0λΆ€ν„° 7κΉŒμ§€μ˜ 인덱슀λ₯Ό 가진 총 8개의 κ°’

κ°’ ['μ„œμšΈ', 'λΆ€μ‚°', '인천', 'λŒ€κ΅¬', 'λŒ€μ „', 'κ΄‘μ£Ό', 'μšΈμ‚°', 'μˆ˜μ›']

인덱슀 0 1 2 3 4 5 6 7

μŠ¬λΌμ΄μ‹±μ˜ 기본문법

πŸ’‘ λ³€μˆ˜λͺ…[μ‹œμž‘ 인덱슀:λ§ˆμ§€λ§‰ 인덱슀]

‘λ§ˆμ§€λ§‰ 인덱슀 -1’ κΉŒμ§€λ§Œ 좜λ ₯

>>> cities = ['μ„œμšΈ', 'λΆ€μ‚°', '인천', 'λŒ€κ΅¬', 'λŒ€μ „', 'κ΄‘μ£Ό', 'μšΈμ‚°', 'μˆ˜μ›']
>>> cities[0:6]
['μ„œμšΈ', 'λΆ€μ‚°', '인천', 'λŒ€κ΅¬', 'λŒ€μ „', 'κ΄‘μ£Ό']
>>> cities [0:5]
['μ„œμšΈ', 'λΆ€μ‚°', '인천', 'λŒ€κ΅¬', 'λŒ€μ „']
>>> cities[5:]
['κ΄‘μ£Ό', 'μšΈμ‚°', 'μˆ˜μ›']

 

λ¦¬λ²„μŠ€ 인덱슀

κΈ°μ‘΄ μΈλ±μŠ€μ™€ 달리 λ§ˆμ§€λ§‰ κ°’λΆ€ν„° -1κΉŒμ§€ ν• λ‹Ήν•˜μ—¬ 첫 번째 κ°’κΉŒμ§€ μ—­μˆœμœΌλ‘œ μ˜¬λΌμ˜€λŠ” 방식

κ°’ ['μ„œμšΈ', 'λΆ€μ‚°', '인천', 'λŒ€κ΅¬', 'λŒ€μ „', 'κ΄‘μ£Ό', 'μšΈμ‚°', 'μˆ˜μ›']

인덱슀 -8 -7 -6 -5 -4 -3 -2 -1

>>> cities = ['μ„œμšΈ', 'λΆ€μ‚°', '인천', 'λŒ€κ΅¬', 'λŒ€μ „', 'κ΄‘μ£Ό', 'μšΈμ‚°', 'μˆ˜μ›']
>>> cities[-8:]        #-8의 μΈλ±μŠ€κ°’λΆ€ν„° λκΉŒμ§€ 좜λ ₯ν•˜λΌλŠ” 뜻
['μ„œμšΈ', 'λΆ€μ‚°', '인천', 'λŒ€κ΅¬', 'λŒ€μ „', 'κ΄‘μ£Ό', 'μšΈμ‚°', 'μˆ˜μ›']

인덱슀 λ²”μœ„λ₯Ό λ„˜μ–΄κ°€λŠ” μŠ¬λΌμ΄μ‹±

 

μŠ¬λΌμ΄μ‹±μ„ ν•  λ•Œ 인덱슀의 첫 번째 κ°’μ΄λ‚˜ λ§ˆμ§€λ§‰ 값이 λΉ„μ–΄ μžˆμ–΄λ„ 잘 μž‘λ™ν•¨

>>> cities = ['μ„œμšΈ', 'λΆ€μ‚°', '인천', 'λŒ€κ΅¬', 'λŒ€μ „', 'κ΄‘μ£Ό', 'μšΈμ‚°', 'μˆ˜μ›']
>>> cities[:]            #cities λ³€μˆ˜μ˜ μ²˜μŒλΆ€ν„° λκΉŒμ§€
['μ„œμšΈ', 'λΆ€μ‚°', '인천', 'λŒ€κ΅¬', 'λŒ€μ „', 'κ΄‘μ£Ό', 'μšΈμ‚°', 'μˆ˜μ›']
>>> cities[-50:50]       #λ²”μœ„λ₯Ό λ„˜μ–΄κ°ˆ 경우 μžλ™μœΌλ‘œ μ΅œλŒ€ λ²”μœ„λ₯Ό 지정 
['μ„œμšΈ', 'λΆ€μ‚°', '인천', 'λŒ€κ΅¬', 'λŒ€μ „', 'κ΄‘μ£Ό', 'μšΈμ‚°', 'μˆ˜μ›']

증가값

μŠ¬λΌμ΄μ‹±μ—μ„œλŠ” μ‹œμž‘ μΈλ±μŠ€μ™€ λ§ˆμ§€λ§‰ 인덱슀 외에도 λ§ˆμ§€λ§‰ μžλ¦¬μ— 증가값을 넣을 수 있음

πŸ’‘ λ³€μˆ˜λͺ…[μ‹œμž‘ 인덱슀:λ§ˆμ§€λ§‰μΈλ±μŠ€:증가값]

>>> cities = ['μ„œμšΈ', 'λΆ€μ‚°', '인천', 'λŒ€κ΅¬', 'λŒ€μ „', 'κ΄‘μ£Ό', 'μšΈμ‚°', 'μˆ˜μ›']
>>> cities[::2]                   #2μΉΈ λ‹¨μœ„λ‘œ
['μ„œμšΈ', '인천', 'λŒ€μ „', 'μšΈμ‚°']
>>> cities[::-1]                  #μ—­μœΌλ‘œ μŠ¬λΌμ΄μ‹±
['μˆ˜μ›', 'μšΈμ‚°', 'κ΄‘μ£Ό', 'λŒ€μ „', 'λŒ€κ΅¬', '인천', 'λΆ€μ‚°', 'μ„œμšΈ']

 

리슀트의 μ—°μ‚°

  • λ§μ…ˆ μ—°μ‚°
>>> color1 = ['red', 'blue', 'green']
>>> color2 = ['orange', 'black', 'white']
>>> print(color1+color2)             #두 리슀트 ν•©μΉ˜κΈ°
['red', 'blue', 'green', 'orange', 'black', 'white']
>>> len(color1)                      #리슀트 길이
3
>>> total_color = color1+color2
>>> total_color
['red', 'blue', 'green', 'orange', 'black', 'white']
  • κ³±μ…ˆ μ—°μ‚°

λ¦¬μŠ€νŠΈμ— n을 κ³±ν–ˆμ„ λ•Œ ν•΄λ‹Ή 리슀트λ₯Ό n배만큼 늘렀쀌

>>> color1 * 2
['red', 'blue', 'green', 'red', 'blue', 'green']
  • in μ—°μ‚°

in 연산은 포함 μ—¬λΆ€λ₯Ό ν™•μΈν•˜λŠ” μ—°μ‚°μœΌλ‘œ ν•˜λ‚˜μ˜ 값이 ν•΄λ‹Ή λ¦¬μŠ€νŠΈμ— λ“€μ–΄μžˆλŠ”μ§€ 확인 κ°€λŠ₯

>>> 'blue' in color2           #color2 λ³€μˆ˜μ—μ„œ λ¬Έμžμ—΄ 'blue'의 쑴재 μ—¬λΆ€ λ°˜ν™˜
False   

color2 = [’orange’, ‘black’, ‘white’] μ—μ„œ ‘blue’λΌλŠ” λ¬Έμžμ—΄κ°’μ€ μ—†μœΌλ―€λ‘œ False

 

리슀트 μΆ”κ°€ 및 μ‚­μ œ

기쑴의 리슀트λ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ μƒˆλ‘œμš΄ 값을 μΆ”κ°€, μ‚­μ œν•˜λŠ” μ—°μ‚°

  • append()ν•¨μˆ˜

리슀트 맨 λ§ˆμ§€λ§‰ μΈλ±μŠ€μ— μƒˆλ‘œμš΄ 값을 μΆ”κ°€

>>> color = ['red', 'blue', 'green']
>>> color.append('white')
>>> color
['red', 'blue', 'green', 'white']
  • extend() ν•¨μˆ˜

리슀트의 λ§μ…ˆ μ—°μ‚°κ³Ό κ°™μŒ

값을 μΆ”κ°€ν•˜λŠ” 것이 μ•„λ‹Œ κΈ°μ‘΄ λ¦¬μŠ€νŠΈμ— κ·ΈλŒ€λ‘œ μƒˆλ‘œμš΄ 리슀트λ₯Ό ν•©μΉ˜λŠ” κΈ°λŠ₯

>>> color = ['red', 'blue', 'green']
>>>
>>> color.extend(['black', 'purple'])
>>> color
['red', 'blue', 'green', 'black', 'purple']
  • insert() ν•¨μˆ˜

append() ν•¨μˆ˜μ™€ 달리 리슀트의 νŠΉμ • μœ„μΉ˜μ— 값을 μΆ”κ°€

리슀트의 맨 λ§ˆμ§€λ§‰μ— 값이 λ“€μ–΄κ°€λŠ” 것이 μ•„λ‹ˆλΌ μ§€μ •ν•œ μœ„μΉ˜μ— 값이 듀어감

>>> color = ['red', 'blue', 'green']
>>> 
>>> color.insert(0, 'orange')
>>> color
['orange', 'red', 'blue', 'green']
  • remove() ν•¨μˆ˜

λ¦¬μŠ€νŠΈμ— μžˆλŠ” νŠΉμ • 값을 μ§€μš°λŠ” κΈ°λŠ₯

μ‚­μ œν•  값을 remove() ν•¨μˆ˜ μ•ˆμ— λ„£μœΌλ©΄ λ¦¬μŠ€νŠΈμ— μžˆλŠ” ν•΄λ‹Ή 값이 μ‚­μ œλ¨

>>> color
['orange', 'red', 'blue', 'green']
>>>
>>> color.remove('red')
>>> color
['orange', 'blue', 'green']

값이 사라지고 κ·Έ λ‹€μŒ 값듀이 ν•œ μΉΈμ”© μ•žμœΌλ‘œ 이동

  • 인덱슀의 μž¬ν• λ‹Ήκ³Ό μ‚­μ œ
  •  

νŠΉμ • μΈλ±μŠ€κ°’μ„ λ³€κ²½(μž¬ν• λ‹Ή)ν•˜κ±°λ‚˜ μ‚­μ œν•˜λŠ” 방법

>>> color = ['red', 'blue', 'green']
>>> color[0] = 'orange'
>>> color
['orange', 'blue', 'green']
>>> del color[0]
>>> color
['blue', 'green']
  • 리슀트 μΆ”κ°€ 및 μ‚­μ œ ν•¨μˆ˜

 ν•¨μˆ˜             κΈ°λŠ₯                                                                                                                       μš©λ‘€

append() μƒˆλ‘œμš΄ 값을 κΈ°μ‘΄ 리슀트의 맨 끝에 μΆ”κ°€ color.append(’white’)
extend() μƒˆλ‘œμš΄ 리슀트λ₯Ό κΈ°μ‘΄ λ¦¬μŠ€νŠΈμ— μΆ”κ°€(λ§μ…ˆμ—°μ‚°κ³Ό 같은 효과) color.extend([’black’, ‘purple’])
insert() κΈ°μ‘΄ 리슀트의 i번째 μΈλ±μŠ€μ— μƒˆλ‘œμš΄ 값을 μΆ”κ°€, i번째 인덱슀λ₯Ό κΈ°μ€€μœΌλ‘œ λ’€μͺ½μ˜ μΈλ±μŠ€λŠ” ν•˜λ‚˜μ”© λ°€λ¦Ό color.insert(0,’orange’)
remove() 리슀트 λ‚΄μ˜ νŠΉμ • 값을 μ‚­μ œ color.remove(’white’)
del νŠΉμ • μΈλ±μŠ€κ°’μ„ μ‚­μ œ del color[0]

 

νŒ¨ν‚Ήκ³Ό μ–ΈνŒ¨ν‚Ή

>>> t = [1,2,3]
>>> a, b, c = t
>>> print(t, a, b, c)
[1,2,3]1 2 3

νŒ¨ν‚Ή : ν•œ λ³€μˆ˜μ— μ—¬λŸ¬κ°œμ˜ 데이터λ₯Ό ν• λ‹Ήν•˜λŠ” 자체λ₯Ό νŒ¨ν‚Ήμ΄λΌκ³  함, λ³€μˆ˜ tλŠ” κ°’ 1,2,3을 νŒ¨ν‚Ήν•œ κ²ƒ

μ–ΈνŒ¨ν‚Ή: ν•œ λ³€μˆ˜μ— μ—¬λŸ¬ 개의 데이터가 λ“€μ–΄μžˆμ„ λ•Œ 그것을 각각의 λ³€μˆ˜λ‘œ λ°˜ν™˜ν•˜λŠ” 방법, t에 μžˆλŠ” κ°’ 1,2,3을 λ³€μˆ˜ a, b, c에 ν• λ‹Ήν•΄μ£ΌλŠ” κ²ƒ

 

이차원 리슀트

리슀트λ₯Ό 효율적으둜 ν™œμš©ν•˜κΈ° μœ„ν•΄ μ—¬λŸ¬κ°œμ˜ 리슀트λ₯Ό ν•˜λ‚˜μ˜ λ³€μˆ˜μ— ν• λ‹Ήν•˜λŠ” 이차원 리슀트 μ‚¬μš© κ°€λŠ₯. 이차원 λ¦¬μŠ€νŠΈλŠ” ν–‰λ ¬κ³Ό 같은 κ°œλ…

학생                                                         A                   B                       C                     D                           E

κ΅­μ–΄ 점수 49 79 20 100 80
μˆ˜ν•™ 점수 43 59 85 30 90
μ˜μ–΄ 점수 49 79 48 60 100

ν‘œμ— 값을 채웠을 λ•Œ μƒκΈ°λŠ” κ°’λ“€μ˜ 집합

κ΅­μ–΄ 점수, μˆ˜ν•™ 점수, μ˜μ–΄ 점수 → 각각 ν•˜λ‚˜μ˜ 리슀트

μ—¬λŸ¬ 개의 리슀트 값듀이 λͺ¨λ‘ ν•˜λ‚˜μ˜ 리슀트 λ³€μˆ˜μ— ν• λ‹Ή → 이차원 리슀트

  • 이차원 리슀트λ₯Ό ν•˜λ‚˜μ˜ λ³€μˆ˜λ‘œ ν‘œν˜„
>>> kor_score = [49, 79, 20, 100, 80]
>>> math_score = [43, 59, 85, 30, 90]
>>> eng_score = [49, 79, 48, 60, 100] 
>>> midterm_score = [kor_score, math_score, eng_score] 
>>> midterm_score
[[49, 79, 20, 100, 80], [43, 59, 85, 30, 90], [49, 79, 48, 60, 100]]

κ΅­μ–΄ 점수 → kor_score

μˆ˜ν•™ 점수 → math_score

μ˜μ–΄ 점수 → eng_score

λͺ¨λ“  λ³€μˆ˜λ₯Ό ν• λ‹Ήν•œ 이차원 리슀트 → midterm_score

>>> print(midterm_score[0][2])
20

 

μ‹€μŠ΅

λΉˆμΉΈμ— μ•Œλ§žμ€ μ½”λ“œ μž‘μ„±ν•˜κΈ°

>>> a = [1]
>>> b = ['a','b','c']
>>>                       
>>> b
['a',[1],'c']
  • μ •λ‹΅→ b[1] = a / a[0:1]
  • b의 λ¦¬μŠ€νŠΈμ—μ„œ ‘b’값이 [1], 즉 a둜 λ³€κ²½λ˜μ–΄ 좜λ ₯λ˜μ—ˆμœΌλ―€λ‘œ b의 1번 μΈλ±μŠ€κ°€ λ³€κ²½λ˜μ–΄μ•Ό ν•œλ‹€. μ΄λ•Œ b에 리슀트둜 값이 λ“€μ–΄κ°”μœΌλ―€λ‘œ a λ₯Ό λ„£κ±°λ‚˜ a[0:1]으둜 μŠ¬λΌμ΄μ‹±ν•΄μ€€λ‹€.

λ‹€μŒ μ½”λ“œμ˜ μ‹€ν–‰ κ²°κ³Ό μ˜ˆμƒν•˜κΈ°

>>> fruit1 = ['orange', 'melon', 'strawberry']
>>> fruit2 = ['watermelon', 'grape']
>>> fruit2.remove('grape')
>>> fruit1.append(fruit2)
>>> print(fruit1)
  • μ •λ‹΅
  • removeλ₯Ό μ‚¬μš©ν•΄μ„œ fruit2 λ¦¬μŠ€νŠΈμ—μ„œ ‘grape’을 μ‚­μ œν•˜μ˜€λ‹€.
  • 그리고 fruit1에 appendλ₯Ό μ‚¬μš©ν•΄μ„œ fruit2λ₯Ό λ¦¬μŠ€νŠΈμ— μΆ”κ°€ν•΄μ£Όμ—ˆμœΌλ―€λ‘œ fruit1을 좜λ ₯ν•˜λ©΄ fruit2 λ¦¬μŠ€νŠΈκ°€ μΆ”κ°€λ˜μ–΄ 좜λ ₯λœλ‹€.
  • ['orange', 'melon', 'strawberry', ['watermelon']]

λ‹€μŒ μ½”λ“œμ˜ μ‹€ν–‰ κ²°κ³Ό μ˜ˆμƒν•˜κΈ°

fruits = ['apple', 'banana', 'cherry', 'grape', 'orange', 'strawberry', 'melon']
print(fruits[-3:], fruits[1::3])
  • μ •λ‹΅
  • fruits[-3:] : fruits λ¦¬μŠ€νŠΈμ—μ„œ -3μΈλ±μŠ€λΆ€ν„° λκΉŒμ§€λ₯Ό 의미 → ['orange', 'strawberry', 'melon']
  • fruits[1::3] : fruits λ¦¬μŠ€νŠΈμ—μ„œ 1번째 μΈλ±μŠ€λΆ€ν„° λκΉŒμ§€ 3μ”© μ¦κ°€ν•˜λŠ” 것을 의미 → [’banana’, ‘orange’]
#좜λ ₯κ²°κ³Ό
['orange', 'strawberry', 'melon'] ['banana', 'orange']

λ‹€μŒ μ½”λ“œμ˜ μ‹€ν–‰ κ²°κ³Ό μ˜ˆμƒν•˜κΈ°

first = ['egg', 'salad', 'bread', 'soup', 'canafe']
second = ['fish', 'lamb', 'pork', 'beef', 'chiken']
third = ['apple', 'banana', 'orange', 'grape', 'mango']

order = [first, second, third]
john = [order[0][:-2], second[1::3], third[0]]
del john[2]
john.extend([order[2][0:1]])
print(john)

μ •λ‹΅

order[0][:-2] : order λ³€μˆ˜μ—μ„œ 0번째 인덱슀 first λ¦¬μŠ€νŠΈμ—μ„œ μ²˜μŒλΆ€ν„° -3인덱슀(-2-1)κΉŒμ§€ 좜λ ₯ν•˜λΌλŠ” 의미(μ΄μ°¨μ›λ¦¬μŠ€νŠΈ)

→ ['egg', 'salad', 'bread']

second[1::3] : second λ¦¬μŠ€νŠΈμ—μ„œ 1번째 μΈλ±μŠ€λΆ€ν„° λκΉŒμ§€ 3μΉΈ λ‹¨μœ„λ‘œ 증가

→ [’lamb’, ’chiken’]

third[0] : third 리슀트의 0번째 인덱슀

→ apple

del john[2] : john 리슀트의 2번째 인덱슀 κ°’ μ‚­μ œ

→ apple μ‚­μ œ

john.extend([order[2][0:1]]) : john λ¦¬μŠ€νŠΈμ— [order[2][0:1]] 즉 [‘apple’] μΆ”κ°€

#좜λ ₯κ²°κ³Ό

[['egg', 'salad', 'bread'], ['lamb', 'chiken'], ['apple']]