Languages/Python

[워니 파이썬 기초] #3 자료구조 - 리스트, 튜플, 딕셔너리

성중 2021. 2. 19. 20:13

<자료구조>

#리스트(List): 여러 element들을 묶어 줌

두 가지 형태로 나타낼 수 있음.

x=list()

y=[]

 

숫자, 문자, 숫자+문자를 리스트로 묶어 보자

x=[1,2,3,4]
y=["hello", "world"]
z=["hello",1,2,3]

print(x)
print(y)
print(z)
↓ 
[1,2,3,4]
["hello", "world"]
["hello", 1,2,3]

리스트 끼리 덧셈도 가능하다

x=[1,2,3,4]
y=["hello", "world"]

print(x+y)
↓
[1,2,3,4, "hello", "world"]

element하나를 지정해 출력할 수 있음

x=[1,2,3,4]

print(x[0]) -> x의 0번째 자리에 있는 element
↓
1

리스트의 elemrnt를 지정해 바꿔칠 수도 있음

x=[1,2,3,4]

x[3]=10 -> x의 3번째 자리에 있는 element를 10으로 바꿔라
print(x)
↓
[1,2,3,10]

리스트에서 다루어지는 function들을 익혀보자

*len() -> 리스트의 사이즈(원소의 개수)를 알 수 있는 명령

x=[1,2,3,4]

a=len(x)
print(a) or 그냥 print(len(x))
↓
4

*sorted() -> 리스트의 원소들 순서를 작은 순부터 나열시킴

x=[4,2,3,1]

a=sorted(x)
print(a) or 그냥 print(sorted(x))
↓
[1,2,3,4]

*sum() -> 리스트의 원소들을 전부 합침

x=[1,2,3,4]

a=sum(x)
print(a) or 그냥 print(sum(x))
↓
10

심화) 리스트에 반복문을 적용

x=[4,3,2,1]

for n in x;
print(n) -> 리스트에 있는 element를 n에 하나씩 넣어가면서 보여주라는 명령
↓
4
3
2
1

문자로도 응용을 해보자

y=["hello", "there"]

for c in y:
print(y)
↓
hello
there

*index() -> 리스트에서 element의 위치 찾기

x=[1,2,3,4]

print(x, index(3)) -> x라는 리스트에서 3이라는 element는 몇 번째 자리에 있나
↓
2 -> 3번째 자리에 있다.

*in() -> 리스트에 이 element가 존재하는지 여부만 알고 싶다.

x=[1,2,3,4]

print(3 in x) -> x라는 리스트에 3이라는 element가 존재하는가?
↓
True

응용) 조건문으로 만들어보자

y=["hello", "world"]

if "hello" in y:
print("hello가 있어요.")
↓
hello가 있어요.

#튜플(Tuple)

두 가지 형태로 나타낼 수 있음.

x=tuple()

y=()

 

리스트와 유사하게 숫자나 문자를 넣고 서로 합치는 것이 가능함

+리스트와 튜플의 차이점: 튜플은 내부 element를 Assignment(업데이트)할 수 없음

즉, 리스트는 mutable(가변) 튜플은 immutable(불변)

 

#딕셔너리(Dictionary)

두 가지 형태로 나타낼 수 있음.

x=dict()

y={}

 

x[a] -> x라는 딕셔너리에 a라는 key의 value

 

*딕셔너리는 key와 value로 이루어짐

x={
"name": "성중",
"age": 21
}                  -> name, age가 key / 성중, 21이 value (쉼표 주의!)

print(x["name"])   ~key를 입력해 value를 출력
->성중    

key에는 ‘불변하는 값’만 들어감 (리스트는 ‘가변’이기 때문에 딕셔너리의 key로 사용X)

 

딕셔너리에 다양한 타입을 넣어보자

x={0="hello",
1="성중",
"age"=20
}

*print (“A” in x) ->x라는 딕셔너리에 A라는 key의 존재여부를 알고 싶을 때

*print(x, keys()) -> x라는 딕셔너리에 있는 모든 key 나열

*print(x, values()) -> x라는 딕셔너리에 있는 모든 value 나열

 

*딕셔너리에 for 반복문을 응용해보자

for key in x:
print(key)   -> key 순서대로 출력
print(x[key]) -> value 순서대로 출력

깔끔하게 응용

for n in x:
  print("key:"+str(n))
  print("value:"+str(x[n]))

*딕셔너리 key의 value를 바꿔칠 수 있음

x[0]="개구리"   -> 0의 key의 value가 "개구리"로 교체됨

*딕셔너리에 새로운 key와 value값을 추가할 수도 있음

x["school"]="HUFS" -> 딕셔너리에 "school"이라는 key와 그에 대한 "HUFS"라는 value가 추가됨

연습문제)

fruit = ["사과", "사과", "바나나","바나나","딸기", "키위", "복숭아", "복숭아", "복숭아" ]

 

#먼저 과일의 총 개수 구하는 코드!

print("총"+str(len(fruit))+"개의 과일이 있습니다.")

 

#이제 이 리스트의 과일 수를 각각 세는 프로그램을 짜봅시다!

d={}

for f in fruit:   #fruit이라는 리스트에 있는 f(임의의 원소)에 대해서~
  if f in d:   #f라는 key가 d라는 딕셔너리에 들어있어?
    d[f]=d[f]+1   #그럼 f의 value 값을 하나 올려줘
  else:
    d[f]=1   #만약 f가 없으면 그걸 딕셔너리에 key로 추가해주고 value를 1로 해줘

print(d)

-> {'사과':2, '바나나':2, '딸기':1, '키위':1 '복숭아':3}