Part 1_2

Jina·2020년 3월 17일
0
post-thumbnail

Chapter 02. 데이터형과 데이터 구조

7. 리스트, 튜플, 사전

리스트

  • 0개 이상의 요소를 갖는 시퀀스(나열)
  • 요소를 추가/ 삭제 등 변경 가능 (mutable)
  • 요소를 콤마(,)로 구분 / [ ] 로 감싸서 생성
  • 데이터 구조 : 배열

append 메서드

  • 리스트 맨 끝에 요소 추가 가능

insert 메서드

  • 지정한 위치에 요소 추가 가능
  • list.insert(n,'name') --> n은 위치( 위치는 0부터 시작 )

del

  • 리스트 요소 삭제
  • del list[n] / n은 위치( 위치는 0부터 시작 )

튜플

  • 0개 이상의 요소를 갖는 시퀀스(나열)
  • 요소 변경 불가능 (immutable) -- > append 메서드, insert 메서드, del 등 사용 불가 
  • 요소를 콤마(,)로 구분 / 요소를 ( ) 로 감싸서 생성
  • 데이터 구조 : 배열

게임을 만들 때 위치정보(X좌표, Y좌표) 등은 튜플로 함께 관리하는 것이 유리함

언팩 : 하나의 튜플을 여러개의 변수에 대입하는 것

pos = (56,74)
pos_1, pos_2 = pos

print(pos_1)  # 56
print(pos_2)  # 74

언팩을 응용하여 변수의 값 바꿀 수 있음

x = 5
y = 3

(x,y) = (y,x)

print(x)  # 3
print(y)  # 5 

# 파이썬에서 = 는 우변의 값을 좌변에 대입하는 것 이므로

사전

  • 키와 값(value) --> "쌍"으로 이루어짐
  • {키:값}으로 생성
  • 콤마(,)를 이용하여 쌍을 구분
  • 사전에 저장된 데이터에는 순서가 없음

시퀀스의 시퀀스 

리스트나 튜플 자신을 요소로써 지정 가능

리스트 안에 튜플/ 리스트를 넣을 수 있고
튜플 안에 튜플/ 리스트를 넣을 수 있음

  • list에 list append하기
a_list=[1,2,3,4]
b_list=[6,7,8]

a_list.append(b_list)

print(a_list)  # [1, 2, 3, 4, [6, 7, 8]]
  • 시퀀스의 시퀀스
a_list=[1,2,3,4]
b_list=[6,7,8]
a_tuple=(9,10)
b_tuple=(11,12)

data_1 = [a_list,b_list]
data_2 = (a_list,b_list)
data_3 = [a_tuple,b_tuple]
data_4 = (a_tuple,b_tuple)

print(data_1)   # [[1, 2, 3, 4], [6, 7, 8]]  / 리스트의 리스트
print(data_2)   # ([1, 2, 3, 4], [6, 7, 8])  / 튜플의 리스트 
print(data_3)   # [(9, 10), (11, 12)]  / 리스트의 튜플
print(data_4)   # ((9, 10), (11, 12))  / 튜플의 튜플
  • 표 형식의 데이터

행마다 리스트를 작성 --> 그러한 행을 또 리스트로  합하기

아래의 그림과 같이 표현 가능

data에 접근시 list[행번호][열번호] 

data = [[0,0,1],[0,1,0],[1,0,0]]
print(data)   # [[0, 0, 1], [0, 1, 0], [1, 0, 0]]

data[2][2] = 2
print(data)  # [[0, 0, 1], [0, 1, 0], [1, 0, 2]]

8. 리스트나 튜플을 다루는데 편리한 함수

len

리스트나 튜플에 포함되는 요소 수를 반환

data = [1,2,3]

print(len(data))  # 3

copy

의도적으로 리스트를 복제할 때 사용하는 메서드

튜플에는 copy 메소드가 없음

data = [1,2,3]
b=data.copy()

print(b)  # [1, 2, 3]

in

어떠한 값이 리스트나 튜플에 포함되었는지 확인할 때 

값이 포함되어 있으면 True
포함되어 있지 않으면 False

data =(1,2,3)

print(2 in data)  # True
print(5 in data)  # False

index

데이터가 몇 번째에 저장되어 있는지 확인할 때 사용하는 메서드
0부터 시작 (첫번째 데이터 : 0)

copy 메서드와 다르게 index 메서드는 리스트/ 튜플 모두 사용 가능

data =[1,2,3]
data2 = (1,2,3)

print(data.index(1))   # 0
print(data2.index(2))   # 1

sort

리스트를 정렬하기 위한 방법
수치의 경우 오름차순, 문자의 경우 알파벳 순으로 정렬됨

  • sorted 함수
    • 인수로 주어진 리스트/ 튜플을 정렬해 그 복사본을 반환
    • 본래 리스트의 정렬 순서는 변하지 않음
data =[1,2,3,9,5,6]
data2 = ('apple','carrot','banana','tomato','melon')

print(sorted(data))   # [1, 2, 3, 5, 6, 9]
print(sorted(data2))   # ['apple', 'banana', 'carrot', 'melon', 'tomato']
# 튜플에서 sorted 함수를 사용하면 정렬 후 리스트로 반환 

print(data)   # ['apple', 'banana', 'carrot', 'melon', 'tomato']
print(data2)   # ('apple', 'carrot', 'banana', 'tomato', 'melon')
# sorted 함수는 원래 리스트의 정렬에 영향을 끼치지않음
  • sort 메서드
    • 본래 리스트를 정렬
    • 튜플에서는 적용 X
data =[1,2,3,9,5,6]

print(data)   # [1, 2, 3, 9, 5, 6]
data.sort() 

print(data)   # [1, 2, 3, 5, 6, 9]

print

print() : 인수로 주어진 정보를 출력

  • % 연산자
    • 본래 문자열 내에 % 서식을 삽입하여 이용  -->  % 연산자를 실제 데이터로 변경
    • %s : 문자열
    • %d : 정수형
    • %f : 실수형

hello = "I am %s. I am %d years old"

print(hello%('2cong',26))   # I am 2cong. I am 26 years old
  • format 메서드
    • 본래 문자열 내에 { } 서식을 삽입하여 이용  -->  { }를 실제 데이터로 변경
    • % 연산자보다 파이썬스러운 방법
    • 문자열에 대해서 format 메서드 호출해 그 인수로 실제 데이터 전달

hello = "I am {}. I am {} years old"

print(hello.format('2cong',26))  # I am 2cong. I am 26 years old

다음과 같이 이용하고 { }에 번호를 기재하여 순서를 설정 할 수 있음 (번호는 0부터 시작)

hello = "I am {1}. I am {0} years old"

print(hello.format('2cong',26))   # I am 26. I am 2cong years old

9. 주석

#을 이용하여 주석을 남길 수 있음

10. 행의 줄바꿈

한 행의 길이는 어느 정도로 맞추는 것이 좋음

그러나 줄이 길어진다면  " \ " 을 삽입하여 행 줄바꿈 가능

0개의 댓글