• Home
  • About
    • Ryureka Moment photo

      Ryureka

      Sin Prisa, Sin Pausa

    • About Me
    • Facebook
    • Github
    • Youtube
  • Projects
  • Posts
    • Posts
    • ProblemSolvings
    • Tags
    • Blog
    • TIL
    • Examples
  • ProblemSolving
    • ProblemSolving
    • BruteForce
    • DFS
    • DP
    • Optimization
  • FrontEnd
    • FrontEnd
    • HTML
  • BackEnd
    • BackEnd
    • Spring
    • Node.js
    • DataBase
      • MySQL
  • Programming
    • Programming
    • Java
    • Python
  • ComputerScience
    • DataStructure
    • Algorithm

[파이썬 기초 문법] 5장. 리스트와 문자열

20 Jun 2019

Reading time ~5 minutes

이 포스트는 윤성우님의 저서 열혈 파이썬 기초편을 기반으로 작성한 글입니다.
  • 윤성우 열혈 파이썬 기초편
    • 5장.리스트와 문자
      • 1.print 함수의 복습과 확장
      • 2.리스트형 데이터
      • 3.인덱싱 연산
      • 4.슬라이싱 연산
      • 5.슬라이싱 연산에서 생략 가능한 부분
      • 6.리스트에서 몇 칸씩 뛰면서 저장된 값들 꺼내기
      • 7.스트링형 데이터: 문자열
      • 8.리스트와 for 루프 그리고 문자열과 for 루프
      • 9.리스트와 문자열을 전달받는 함수 len

윤성우 열혈 파이썬 기초편

5장.리스트와 문자

1.print 함수의 복습과 확장

>>> for i in [1, 2, 3]:
        print(i, end = '_')

1_2_3_

>>> for i in [1, 2, 3]:
        print(i, end = ' ')

1 2 3

2.리스트형 데이터

>>> 35
35

>>> Happy
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    Happy
NameError: name 'Happy' is not defined

>>> 3.14
3.14

>>> [1, 2, 3]
[1, 2, 3]

Happy와 같이 자료형(ex.int,float,…)이 아닌 값을 입력하면 무엇인지 모른다는 에러 메시지가 출력됨.

리스트 또한 파이썬이 인식할 수 있는 자료형이다.(for문의 부속으로 사용되는 용도로 존재하는 문법에 한정된 것이 아니다.)

>>> type([1, 2, 3])
'''
<class 'list'>
'''

type 함수 실행 결과 리스트 또한 자료형에 해당함을 알 수 있다.

>>> [1, "hello", 3.3]
[1, 'hello', 3.3]

한 리스트에 여러 자료형(int,str,float,…)이 들어 갈 수 있다.

>>> [1, 2, [3, 4], ["AAA", "ZZZ"]]
[1, 2, [3, 4], ['AAA', 'ZZZ']]

리스트 안에 리스트가 들어갈 수 있다.

>>> st = [1, "hello", 3.3]
>>> print(st)
[1, 'hello', 3.3]

리스트를 함수의 인자로 전달할 수 있다.

int형 데이터 		 ex) 3, 5, 7, 9
float형 데이터		 ex) 2.2, 4.4, 6.6, 8.8
list형 데이터		 ex) [3, 5, 7, 9], [2.2, 4.4, 6.6, 8.8]

따라서 자료형을 위와 같이 분류할 수 있다.


3.인덱싱 연산

>>> [1, 2, 3] + [4, 5]
[1, 2, 3, 4, 5]

>>> [1, 2, 3] * 2
[1, 2, 3, 1, 2, 3]

리스트의 덧셈 및 곱셈 연산결과는 위와 같다.

>>> st = [1, 2, 3, 4, 5]
>>> n1 = st[0]
>>> n2 = st[4]
>>> print(n1, n2)
1 5

>>> st = [1, 2, 3, 4, 5]
>>> print(st[-1], st[-2], st[-3])
5 4 3

리스트의 한 인덱스의 인덱싱 연산결과는 위와 같다.

인덱스가 음수인 경우 오른쪽 끝을 -1로 하여 -1씩 감소한다.

>>> st = [1, 2, 3, 4, 5]
>>> st[0] = 5
>>> st[4] = 1
>>> st
[5, 2, 3, 4, 1]

리스트의 인덱싱 대입 연산결과는 위와 같다.

4.슬라이싱 연산

>>> st1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> st2 = st1[2:5]       # st1[2:5]를 꺼내 st2에 저장
>>> st2
[3, 4, 5]

왼쪽 인덱스(2)부터 오른쪽 인덱스 이전(5-1)까지에 해당하는 값들이 출력된다.

5.슬라이싱 연산에서 생략 가능한 부분

>>> st = [1, 2, 3, 4, 5]
>>> st[0:3] = [0, 0, 0]
>>> st
[0, 0, 0, 4, 5]

>>> st = [1, 2, 3, 4, 5]
>>> st[:3] = [0, 0, 0]
>>> st
[0, 0, 0, 4, 5]

왼쪽 인덱스가 0이라면 생략할 수 있다.

>>> st = [1, 2, 3, 4, 5]
>>> st[2:] = [0, 0, 0]
>>> st
[1, 2, 0, 0, 0]

오른쪽 인덱스를 생략하면 갯수에 맞추어 자동으로 연산된다.

>>> st = [1, 2, 3, 4, 5]
>>> st[:] = [0, 0, 0, 0, 0]
>>> st
[0, 0, 0, 0, 0]

>>> st = [1, 2, 3, 4, 5]
>>> st[:] = [0]        # 리스트 전체를 0 하나로 교체
>>> st
[0]

>>> st = [1, 2, 3, 4, 5]
>>> st[:] = []        # 리스트 전체 내용 삭제
>>> st
[]

양쪽 모두 생략하면 인덱스 전체를 기준으로 연산된다.

6.리스트에서 몇 칸씩 뛰면서 저장된 값들 꺼내기

>>> st1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
>>> st2 = st1[0:9:2]     # st1[0] ~ st2[8]까지 2칸씩 뛰면서
>>> st2
[1, 3, 5, 7, 9]

>>> st1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
>>> st2 = st1[0:9:3]      # st1[0] ~ st2[8]까지 3칸씩 뛰면서
>>> st2
[1, 4, 7]

7.스트링형 데이터: 문자열

>>> "Happy birthday to you"
'Happy birthday to you'

>>> 'Happy birthday to you'
'Happy birthday to you'

>>> type('what1')      # 작은따옴표로 묶은 문자열
<class 'str'>

>>> type("what2")      # 큰따옴표로 묶은 문자열
<class 'str'>

큰 따옴표로 묶어도 작은 따옴표가 기준이 되어 모두 동일하게 문자열로 저장된다.

따라서 자료형을 아래와 같이 분류할 수 있다.

int형 데이터 		ex) 3, 5, 7, 9
float형 데이터 		ex) 2.2, 4.4, 6.6, 8.8
리스트형 데이터 	ex) [3, 5, 7, 9], [2.2, 4.4, 6.6, 8.8]
스트링형 데이터 	ex) "I am a boy", 'You are a girl'
>>> [1, 2] + [3, 4]
[1, 2, 3, 4]
>>> "Hello" + "Everybody"
'HelloEverybody'

>>> [1, 2] * 3
[1, 2, 1, 2, 1, 2]
>>> "AZ" * 3
'AZAZAZ

문자열의 덧셈 및 곱셈 연산결과는 다음과 같다

>>> st = [1, 2, 3, 4, 5]
>>> st[2] 		# 세 번째 위치의 값만 뽑아 냄
3
>>> str = "SIMPLE"
>>> str[2] 	# 세 번째 위치의 값만(문자만) 뽑아 냄
'M'

>>> st = [1, 2, 3, 4, 5, 6, 7]
>>> st[2:5]
[3, 4, 5]
>>> str = "SIMPLEST"
>>> str[2:5]
'MPL'

>>> str = "Happy"
>>> str[0] = "D"
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    str[0] = 'D'
TypeError: 'str' object does not support item assignment

슬라이싱 연산은 리스트와 동일하나 문자열은 리스트와 달리 변경이 불가한 자료형이다!

8.리스트와 for 루프 그리고 문자열과 for 루프

>>> for i in [1, 2, 3]:
        print(i, end = ' ')

1 2 3

>>> for i in 'Happy':
        print(i, end = ' ')

H a p p y

for문 역시 리스트와 동일하게 사용할 수 있다.

9.리스트와 문자열을 전달받는 함수 len

>>> st = [1, 2, 3]
>>> len(st)
3
>>> sr = 'HaHaHa~'
>>> len(sr)
7

for문 역시 리스트와 동일하게 사용할 수 있다.



Python Share