<리스트>
여러가지 자료를 저장할 수 있는 자료, 즉 독립적인 자료들을 모아서 사용할 수 있게 해주는 특별한 형태의 자료를 말합니다.
리스트는 한 가지 자료형으로도, 여러가지 자료형으로도 구성할 수 있습니다.
리스트는 0번째부터 세고, [ ] 안에 들어있는 숫자를 인덱스, 리스트를 구성하는 자료들을 요소라고 부릅니다.
리스트의 인덱스에 [1:3]과 같이 넣어주면 1번째 이상, 3번째 미만의 값들이 출력이 되고, 리스트의 각 요소는 변경이 가능합니다.
- 리스트의 기능
대괄호 안에 음수를 넣어 뒤에서부터 요소 선택 가능!
리스트 접근 연산자를 이중으로 사용 가능!
리스트 안에 리스트 사용 가능! (2차원 배열)
** 리스트의 길이보다 더 긴 인덱스로 요소에 접근하려고 하면 IndexError 오류가 난다!!!
- 리스트 연산자
+ : 연결
* : 반복
len() : 길이 구하기
- 리스트에 요소 추가하기
append() : 리스트의 마지막에 요소 추가
insert() : 원하는 위치에 요소 추가
extend() : 한 번에 리스트의 마지막에 여러가지 요소 추가
*** 리스트명.append(요소)
*** 리스트명.insert(위치, 요소)
*** 리스트명.extend([요소1, 요소2, 요소3])
- 요소 제거하기
del : 인덱스 값에 있는 요소 제거
pop() : 인덱스 값에 있는 요소 제거, 인덱스 값을 지정하지 않으면 맨 마지막 값 제거
*** del 리스트명[인덱스]
*** 리스트명.pop(인덱스)
** del에서 범위를 지정해 한 번에 여러가지 요소 제거가 가능~!
- 값으로 제거하기
remove() : remove에 들어있는 값과 같은 첫 번째의 값 제거
*** 리스트명.remove(값)
- 전체 제거하기
clear() : 리스트 내부 요소 전체 제거
*** 리스트명.clear()
- 리스트 정리하기
sort() : 리스트를 오름차순으로 정리
*** 리스트명.sort()
- 리스트 안에 요소가 있는지 확인하기 -> True 또는 False
in : 리스트 안에 요소가 있는지
not in : 리스트 안에 요소가 없는지
*** 값 in 리스트명 / 값 not in 리스트명
<반복문>
*** for 반복자 in 반복할 수 있는 것:
반복할 코드
- 리스트와 반복문 같이 사용하기
- 중첩 리스트와 중첩 반복문
a의 리스트들을 items에 넣음 -> 3번 반복
items에 있는 리스트들을 item 변수에 넣음 -> 각 3번씩
items 출력 -> 각 리스트가 3번씩 출력
item 출력 -> 1부터 9까지 출력
- 전개 연산자
* : 리스트의 0번째부터 끝까지 표현하는 것과 같은 효과
*** *리스트명
chapter 4-1 확인 문제
선택 미션
1. list_a = [0,1,2,3,4,5,6,7]입니다. 다음 표의 함수들을 실행했을 때 list_a의 결과가 어떻게 나오는지 적어 보세요.
-> [0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7]
-> [0,1,2,3,4,5,6,7,10]
-> [0,1,2,0,3,4,5,6,7]
-> [0,1,2,4,5,6,7]
-> [0,1,2,3,4,5,6,7]
-> []
2. 다음 반복문 내부에 if 조건문의 조건식을 채워서 100 이상의 숫자만 출력하게 만들어 보세요. if 조건문과 for 반복문을 조합하는 코드는 굉장히 많이 사용합니다.
numbers = [279, 103, 5, 32, 65, 9, 72, 800, 99]
for number in numbers:
if number>100:
print("- 100 이상의 수: ", number)
3. 다음 빈칸을 채워서 실행 결과에 해당하는 프로그램들을 완성해 보세요.
numbers = [279, 103, 5, 32, 65, 9, 72, 800, 99]
for number in numbers:
if number%2==0:
print(number,"는 짝수입니다.")
else:
print(number,"는 홀수입니다.")
numbers = [279, 103, 5, 32, 65, 9, 72, 800, 99]
for number in numbers:
print(number,"는",len(str(number)),"자릿수입니다.")
4. 다음 코드의 빈칸을 채워서 실행 결과처럼 출력되도록 완성해 보세요.
numbers = [1,2,3,4,5,6,7,8,9]
output = [[],[],[]]
for number in numbers:
output[number%3].append(number)
print(output)
5. 다음 코드의 빈칸을 채워서 실행 결과처럼 출력되도록 완성해 보세요. 짝수 번째 요소를 제곱하는 것입니다.
numbers = [1,2,3,4,5,6,7,8,9]
for i in range(0, len(numbers) // 2): #0부터 8까지
j = i*2+1
print(f"i = {i}, j = {j}")
numbers[j] = numbers[j]**2
print(numbers)
<딕셔너리>
딕셔너리는 값과 값에 키를 붙여서 저장하는 것입니다.
*** 변수 = {
"키1" : 값,
"키2" : 값,
"키3" : 값
}
딕셔너리의 요소는 키의 이름으로 접근할 수 있고, 리스트로도 저장할 수 있습니다.
딕셔너리의 요소도 변경이 가능합니다.
- 딕셔너리에 값 추가하기
딕셔너리는 키를 기반으로 값을 입력하면 추가할 수 있습니다.
*** 딕셔너리[새로운 키] = 값
- 딕셔너리의 값 제거하기
딕셔너리는 리스트와 마찬가지로 del로 특정 키를 지정해서 제거할 수 있습니다.
*** del 딕셔너리[키]
- in 키워드
리스트와 마찬가지로 딕셔너리도 in 키워드로 딕셔너리 내부에 키가 있는지 확인할 수 있습니다.
- for 반복문과 딕셔너리
*** for 키 변수 in 딕셔너리:
실행할 코드
chapter 4-2 확인 문제
1. 다음 표에서 dict_a의 결과가 나오도록 빈칸을 채워보세요.
-> dict_a["name"] = "구름"
-> del dict_a["name"]
2. 딕셔너리와 리스트를 조합하면 다음 코드의 변수 pets처럼 다양한 정보를 축적할 수 있습니다. 이를 실행 결과처럼 출력되도록 빈칸에 반복문과 print() 함수를 조합해 보세요.
pets = [
{"name" : "구름", "age": 5},
{"name" : "초코", "age": 3},
{"name" : "아지", "age" : 1},
{"name" : "호랑이", "age" : 1}
]
print("# 우리 동네 반려 동물들")
for i in pets:
print(i["name"], i["age"], "살")
3. 다음 빈칸을 채워서 numbers 내부에 들어 있는 수자가 몇 번 등장하는지를 출력하는 코드를 작성해 보세요.
numbers = [1,2,6,8,4,3,2,1,9,5,4,9,7,2,1,3,5,4,8,9,7,2,3]
counter = {}
for number in numbers:
if number in counter:
counter[number] = counter[number] + 1
else:
counter[number] = 1
print(counter)
4.
character = {
"name": "기사",
"level": 12,
"items" : {
"sword" : "불꽃의 검",
"armor" : "풀플레이트"
},
"skill" : ["베기", "세게 베기", "아주 세게 베기"]
}
for key in character:
if type(character[key]) is list:
for i in character[key]:
print(key,":", i)
elif type(character[key]) is dict:
for item in character[key]:
print(item,":", character[key][item])
else:
print(key,":",character[key])
<범위 자료형>
정수로 이루어진 범위는 range( )로 만듭니다.
1. 매개변수에 숫자를 한 개 넣는 방법
*** range(숫자)
0부터 숫자-1까지의 범위를 만듭니다.
2. 매개변수에 숫자를 두 개 넣는 방법
*** range(숫자1, 숫자2)
숫자1부터 숫자2-1까지의 범위를 만듭니다.
3. 매개변수에 숫자를 세 개 넣는 방법
*** range(숫자1, 숫자2, 숫자3)
숫자 1부터 숫자2-1까지의 범위를 만들고, 숫자 3만큼의 차이를 가집니다.
** 매개변수 자리에는 무조건 정수가 들어가야하기 때문에 나눗셈은 들어갈 수 없습니다~!! 그래서 나눈 값을 int( )를 사용해서 정수로 바꾸어 주거나, // 정수 나누기 연산자를 사용합니다~~
- for 반복문과 범위
리스트와 범위를 조합해서 반복문 사용하기~!
1. 몇 번째 출력인지 알고 싶을 때는 range(len( ))를 사용하면 됩니다~!
2. 반대로 반복하고 싶을 때는 range( ) 함수의 매개변수를 세 개 사용할 수 있습니다~
3. 반대로 반복하고 싶을 때는 reversed( ) 함수를 사용할 수 있습니다~~
<반복문으로 피라미드 만들기>
<while 반복문>
while 반복문은 조건이 참인 동안 문장을 반복합니다.
*** while 불 표현식:
문장
1. for 반복문처럼 사용하기
2. 상태를 기반으로 사용하기
3. 시간을 기반으로 반복하기
<break>
break는 반복문을 벗어날 때 사용하는 키워드입니다. 보통 무한 반복문 속에 넣어 사용합니다.
<continue>
continue는 특정 반복을 생략하고 다음 반복문으로 넘어갈 때 사용하는 키워드입니다.
chapter 4-3 확인 문제
1. 다음 표를 채워 보세요. 코드가 여러 개 나올 수 있는 경우 가장 간단한 형태를 넣어 주세요.
-> [4, 5]
-> [7, 6, 5, 4, 3, 2, 1]
-> range(3, 10, 3)
2. 빈칸을 채워 키와 값으로 이루어진 각 리스트를 조합해 하나의 딕셔너리를 만들어 보세요.
key_list = ["name", "hp", "mp", "level"]
value_list = ["기사", 200, 30, 5]
character = {}
for i in range(len(key_list)):
character[key_list[i]] = value_list[i]
print(character)
3. 1부터 숫자를 하나씩 증가시키면서 더하는 경우를 생각해 봅시다. 몇을 더할 때 1000을 넘는지 구해 보세요. 그리고 그때의 값도 출력해 보세요.
limit = 1000
i = 1
sum_value = 0
while True:
if sum_value > limit:
break
else:
sum_value += i
i = i + 1
print("{}를 더할 때 {}을 넘으며 그때의 값은 {}입니다.".format(i-1, limit, sum_value))
4. 1부터 100까지의 숫자가 있다고 합시다. 이를 다음과 같이 계산한다고 했을 때, 최대가 되는 경우는 어떤 숫자를 곱했을 때인지를 찾아 주세요.
max_value = 0
a = 0
b = 0
for i in range(100):
j = 100 - i
if i * j > max_value:
a = i
b = j
max_value = i * j
print("최대가 되는 경우 : {} * {} = {}".format(a, b, max_value))
<리스트에 적용할 수 있는 함수>
min() : 리스트 내부에서 최소값 찾기
max() : 리스트 내부에서 최댓값 찾기
sum() : 리스트 내부에서 값 모두 더하기
*** min/max/sum(리스트명)
reversed() : 리스트 뒤집기
*** reversed(리스트명)
** 그냥 reversed(리스트명)하면 리스트가 뒤집어지기만 하기 때문에 list()로 묶어주거나 새로운 리스트에 넣어줘야함~~!
** reversed()의 결과는 제너레이터이기 때문에 함수의 결과를 여러번 사용하지 않고 함수의 결과를 곧바로 사용해주기~
enumerate() : 함수와 반복문 조합하기, 몇 번째인지 알려줌
*** enumerate(리스트명)
<딕셔너리에 적용할 수 있는 함수>
items() : enumerate 함수와 같이 키와 값을 조합하기
<리스트 내포>
리스트를 활용한 반복문과 조건문을 한 줄로 변경하는 것
*** 리스트명 = [최종 결과 for 변수 in 반복할 수 있는 것 if 조건문]
<문자열 연결하는 방법>
1. 괄호로 연결한다~!
2. \n을 사용해서 연결한다~!
3. join() 함수를 사용한다~!
*** "사이에 넣을 문자(::)".join["문자열", "문자열1", "문자열2"]
--> 문자열::문자열1::문자열2
chapter 4-4 확인 문제
1. 다음 중 enumerate() 함수와 itmes() 함수의 사용법으로 올바른 것은?
②,③
2. 이를 활용해서 1~100 사이에 있는 숫자 중 2진수로 변환했을 때 0이 하나만 포함된 숫자를 찾고, 그 숫자들의 합을 구하는 코드를 만들어 보세요.
output = [i for i in range(0, 100 + 1) if "{:b}".format(i).count("0") == 1]
for i in output:
print("{} : {}".format(i, "{:b}".format(i)))
print("합계 : ",sum(output))
chapter 4-4 도전 문제
1.
array = [1,5,1,4,6,3,1,6,2,4,5]
dict = {}
for i in array:
if i in dict:
dict[i] += 1
else:
dict[i] = 1
print(f"{array}에서 사용도니 숫자의 종류는 {len(dict)}개입니다.\n참고:{dict}")
2.
dna = input("염기 서열을 입력해주세요: ")
a = 0
t = 0
g = 0
c = 0
for i in dna:
if 'a' == i:
a += 1
elif 't' == i:
t += 1
elif 'g' == i:
g += 1
elif 'c' == i:
c += 1
print(f"a의 개수 : {a}\nt의 개수 : {t}\ng의 개수 : {g}\nc의 개수 : {c}")
3.
dna = input("염기 서열을 입력해주세요: ")
dict = {}
for i in range(0, len(dna), 3):
if dna[i:i+3] in dict:
dict[dna[i:i+3]] += 1
else:
if len(dna[i:i+3]) < 3:
continue
else:
dict[dna[i:i+3]] = 1
print(dict)
4.
a = [1,2,[3,4],5,[6,7],[8,9]]
b = []
for i, value in enumerate(a):
if type(a[i]) == list:
for k in value:
b.append(k)
else:
b.append(value)
print(b)
\^o^/ 이번주 혼공파도 성공~~~ \^o^/
'혼공파' 카테고리의 다른 글
혼공파 6주차..! (0) | 2023.08.16 |
---|---|
혼공파 5주차!!! 😋 (0) | 2023.08.06 |
혼공파 4주차~😁 (0) | 2023.07.25 |
혼공파 2주차~😊 (0) | 2023.07.11 |
혼공파 1주차~🤓 (0) | 2023.07.10 |