[혼공파] - 리스트, 딕셔너리

SGIYLEVOELR·2022년 1월 28일
0

혼공파

목록 보기
3/4

리스트, 딕셔너리 차이

리스트

  • 인덱스 기반으로 저장

    변수 = [ 값, ... ]

딕셔너리

  • 키를 기반으로 저장

    변수 = { 키: 값, ... }

리스트 선언

  • 대괄호[] 내에 여러 가지 형태(...?)의 자료를 넣어서 선언
array = [273, 32, 103, "문자열", True, False]
print(array)
# 결과 :: [273, 32, 103, '문자열', True, False]

리스트 요소 선택, 값 가져오기

list_a = [273, 32, 103, "문자열", True, False]

해당 결과의 요소는 0번 요소부터 5번 요소까지 나오게 된다.
즉, 요소는 0번부터 세야 함.

1. 앞에서부터 순서대로 요소 선택하기

print(list_a[1])
# 결과 :: 32

1. 뒤에서부터 요소 선택하기

print(list_a[-1])
# 결과 :: False

2. 리스트 접근연산자 이중으로 사용하기

print(list_a[3]) # 결과 :: '문자열'
print(list_a[3][0]) # 결과 :: '문'

3. 리스트 내에 리스트

list_b = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

print(list_b[1]) # 결과 :: [4, 5, 6]
print(list_b[1][1]) # 결과 :: 5

IndexError

  • 리스트에서 요소의 인덱스 값을 잘못 부르게 될 경우 나타나는 에러

리스트 종합..?

리스트 연산자

- +, *, len

  • 리스트끼리 +(연결), *(반복)을 했을 경우 이중리스트가 나오는 게 아니다..!
  • 위의 결과처럼 [ ] 안에 리스트가 횟수만큼 연결 또는 반복되어서 나오게 된다.

연결

  • +
    [리스트A, 리스트B]

반복

  • *
    [리스트A, 리스트A, ...]

길이

  • len
    len([리스트]) :: 리스트 내의 요소 개수

요소 추가하기: append, insert

append()

  • 리스트 뒤에 요소 추가

    리스트명.append(요소)

insert()

  • 요소 추가할 위치를 정할 수 있음

    리스트명.insert(위치, 요소)

    • 위치를 정해주기 때문에 원하는 곳에 추가 가능

예시

#리스트를 선언합니다.
list_a = ['가', '나', '다', '라']

# 리스트 뒤에 요소 추가하기
print("# 리스트 뒤에 요소 추가하기")
list_a.append(1)
list_a.append(2)
print(list_a)
print()

# 리스트 중간에 요소 추가하기
print("# 리스트 중간에 요소 추가하기")
list_a.insert(0, 'A')
list_a.insert(5, 'B')
print(list_a)
  • 원래의 리스트와 추가한 값들을 구분하기 위해서 모두 다르게 추가했음.
  • 각각 기존 리스트는 한글, append 사용 시에는 숫자 추가, insert 사용 시에는 대문자 추가했음

리스트 인덱스로 제거하기: del, pop

del

  • 리스트의 특정 인덱스의 요소 제거

    del 리스트명[인덱스]

pop()

  • 인덱스의 위치에 있는 요소 제거

    리스트명.pop(인덱스)

예시

list_a = [0, 1, 2, 3, 4, 5]
print("# 리스트의 요소 하나 제거하기")

# 제거 방법[1] - del
del list_a[1]
print("del list_a[1]: ", list_a)

# 제거 방법[2] - pop()
list_a.pop(2)
print("pop(2): ", list_a)

결과

  • del과 pop은 결과는 같지만 사용 방법이 다르기 때문에 유의해야 함.!!

값으로 제거 - remove

remove

리스트.remove(값)

  • remove는 1개만 제거된다.
  • 동일한 값이 있을 경우 제일 앞에 있는 값이 제거된다.
  • 동일한 값을 한 번에 제거하려면 반복문을 사용해야 한다.

모두 제거 - clear

clear

리스트.clear()

  • 리스트 내에 있는 모든 요소들이 삭제된다.
  • 따라서, 실제로 clear는 조심해서 사용해야 한다.

기존의 리스트 변경이 있는 지 확인하기

#리스트를 선언합니다.
list_a = ['가', '나', '다', '라']
list_b = [1, 2, 3, 4]
list_c = ['a', 'b', 'c', 'd']

# 리스트 연산자 사용하기
print("# 리스트 연산자 사용하기")
print(list_b)
print(list_c)
print(list_b + list_c)
print(list_b * 2)
print("list_b의 길이는: ", len(list_b))
print("list_c의 길이는: ", len(list_c))
print()

# 리스트 뒤에 요소 추가하기
print("# 리스트 뒤에 요소 추가하기")
list_a.append(1)
list_a.append(2)
print(list_a)
print()

# 리스트 중간에 요소 추가하기
print("# 리스트 중간에 요소 추가하기")
list_a.insert(0, 'A')
list_a.insert(5, 'B')
print(list_a)
print()

# 리스트 요소의 변화 확인하기
print("# 리스트 요소의 변화 확인하기")
print(list_a)
print(list_b)
print(list_c)

결과

  • 결과를 확인해보면 append, insert를 사용한 list_a는 리스트 내의 요소 자체가 변화했음을 확인할 수 있음.
  • 반대로 리스트 연산자를 사용한 list_b, list_c는 리스트 내의 요소는 변화하지 않음을 확인할 수 있음.

리스트 내부에 값이 있나..? - in/not in 연산자

값 in 리스트

  • 결과는 True, False로 나온다.

반복문 - for

for 반복자 in 반복할 수 있는 것:
코드

  • 예시로..
array = [1, 2, 3]
for a in array: print(a)
# array라는 이름의 리스트의 요소들을 a 변수에 하나씩 담아서 이를 print로 보여준다.
# 결과 :: 1 <br> 2 <br> 3 (<br>은 print()와 동일.. 일단 임의로 <br> 작성함... ㅎ)

p.157 - 1) list_a = [0, 1, 2, 3, 4, 5, 6, 7] 예제

list_a.extend(list_a) # [0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7]
list_a.append(10) # [0, 1, 2, 3, 4, 5, 6, 7, 10]
list_a.insert(3, 0) # [0, 1, 2, 0, 3, 4, 5, 6, 7]
list_a.remove(3) # [0, 1, 2, 4, 5, 6, 7]
list_a.pop(3) # [0, 1, 2, 4, 5, 6, 7]
list_a.clear() # []

딕셔너리

선언

변수 = {:,:,
        ...:}

출력 결과

예시

# 딕셔너리를 선언합니다.
dictionary = {
    "name": "7D 건조 망고",
    "type": "당절임",
    "ingredient": ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
    "origin": "필리핀"
}

# 출력합니다.
print("name: ", dictionary["name"])
print("type: ", dictionary["type"])
print("ingredient: ", dictionary["ingredient"])
print("origin: ", dictionary["origin"])
print()

# 값을 변경합니다.
dictionary["name"] = "3D 건조 망고"
print("name: ", dictionary["name"])

결과

  • 값 출력 - 딕셔너리의 키로 값 출력 가능
  • 키를 사용하여 값 변경 가능
  • 새로운 키를 넣게되면 --> 딕셔너리에 값 추가
  • 기본 키에 값이 달라지면 --> 값 수정
  • del 딕셔너리명[키] --> 값 삭제

Key Error

  • 없는 키를 출력하려고 할 때 생기는 에러

Key Error를 방지하기 위해서

키가 있는 지 확인하기 - in / get()

in 키워드

ifin 딕셔너리명:
	print(딕셔너리명[])
else:
	print("딕셔너리에 키가 존재하지 않습니다.")

get() 함수

  • get함수 사용 시 --> 존재하지 않는 키를 None으로 나타내는 것 같다..
# value :: 임시적인 변수명으로 설정..
value = 딕셔너리명.get("존재하지 않는 키")
print("값: ", value) # 값: None

if value == None:
	print("존재하지 않는 키에 접근했습니다..")

딕셔너리 반복문 사용하기

  • 딕셔너리에 포함되어있는 키들을 반복해서...
  • if) for문 안에 print문이 있을 경우
    - 키와 키에 해당하는 값까지 출력 가능.
forin 딕셔너리:
	코드

0개의 댓글