list 와 반복문

list : 여러가지 자료를 저장할 수 있는 자료
[element, element, element, …] 형태로 입력

list_a = [273, 32, 103, ‘string’, True, False] 일때
각 요소가 들어있는 위치는

list_a 273 32 103 string True False
[0] [1] [2] [3] [4] [5] [6]

이때 [ ] 안에 들어간 숫자를 인덱스(index)라고 부른다.

리스트 연산자 : 연결(+), 반복(*), len( )

list_a = [1, 2, 3]
list_b = [4, 5, 6]
print("# list")
print("list_a : ", list_a)
print("list_b : ", list_b)
print()

print("# list 기본 연산자")
print("list_a + list_b = ", list_a + list_b)
print("list_a * 3 = ", list_a * 3)
print()

print("list 길이구하기")
print("list 의 길이 = ", len(list_a))
# list
list_a :  [1, 2, 3]
list_b :  [4, 5, 6]

# list 기본 연산자
list_a + list_b =  [1, 2, 3, 4, 5, 6]
list_a * 3 =  [1, 2, 3, 1, 2, 3, 1, 2, 3]

list 길이구하기
list 의 길이 =  3

리스트에 요소 추가하기 : append, insert

listname.append(element) : list 뒤에 element 추가
listname.insert(위치, element) : 지정 위치에 요소 추가

list_c = [1, 2, 3]
list_c.append(4)
print(list_c)
print()
list_c.insert(2, 8)
print(list_c)

[1, 2, 3, 4]

[1, 2, 8, 3, 4]

리스트 요소 제거하기

del listname[index]
listname.pop(index)
listname.remove(값)
listname.clear( ) : 모두 제거하기

list_d = [1, 2, 3, 4, 5]
del list_d[1]
print(list_d)
list_d.pop(3)
print(list_d)
list_d.remove(3)
print(list_d)
list_d.clear()
print(list_d)
[1, 3, 4, 5]
[1, 3, 4]
[1, 4]
[]

리스트 내부에 있는지 확인하기 : in / not in 연산자

값 in listname

list_h = [1, 2, 3, 4, 5, 6, 7]

print(3 in list_h)
print(10 in list_h)
True
False

For 반복문

조건에 맞게 반복한다.

for i in range(10):
    print('print')
print
print
print
print
print
print
print
print
print
print

For 반복문 list 와 함께 사용하기

기본형태
for 반복자 in 반복할 수 있는 것 :
 코드

array = [273, 32, 103, 57, 52]

for element in array:
    print(element)
print()
# 문자열에선
for character in 'hello world':
    print("- ", character)
273
32
103
57
52

-  h
-  e
-  l
-  l
-  o
-   
-  w
-  o
-  r
-  l
-  d

딕셔너리와 반복문

리스트는 ‘인덱스’를 기반으로 값을 저장하는 것 이라면
딕셔너리(dictionary)는 ‘키’를 기반으로 값을 저장한다.
{
‘키A’ : 10(키값),
}

자료형 의미 가리키는 위치 선언 형식
리스트 인덱스를 기반으로 값을 저장 인덱스 변수 = [ ]
딕셔너리 키를 기반으로 값을 저장 변수 = { }

딕셔너리 선언하기

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

# dictionary 선언하기
dict_avengers = {
    "name" : "avengers endgame",
    "type" : "hero movie",
    "release date" : "april 4th",
    "character" : ["ironman", "thor", "cpt america", "hulk"],
    "director" : "russo"
}

# 출력하기
print('name : ', dict_avengers['name'])
print('type : ', dict_avengers['type'])
print('realease date : ', dict_avengers['release date'])
print('character : ', dict_avengers['character'])
print('director : ', dict_avengers['director'])
print()
# 값을 변경하기
dict_avengers["director"] = "joe russo"
print("director : ", dict_avengers["director"])

name :  avengers endgame
type :  hero movie
realease date :  april 4th
character :  ['ironman', 'thor', 'cpt america', 'hulk']
director :  russo

director :  joe russo

dictionary 에 새로운 값 추가하기

dictionary 에 새로운값 추가하기
dictionaryname[‘새로운 키’] = 새로운 값

dictionary 에 요소 제거하기
del dictionaryname[‘key]

key 가 존재하는지 확인

  1. if 를 활용
    key = input(“접근하고자 하는 키 입력하시오 > “) : 원하는 key를 입력받음
    if key in dictionary:
    print(dictionary[key])
    else:
    print(“존재하지 않는 키”)

  2. get 함수를 이용
    value = dictionary.get(“존재하지 않는 키”) : 존재하지 않는 key를 value로 확인
    print(value) : value가 없으면 None로 출력

반복문(for) 과 dictionary
for key in dictionary :
print(key, “ : “, dictionary[key])

반복문과 while 반복문

range(범위)

  1. range(A) * A 는 숫자
a = range(5)
print(list(a))
[0, 1, 2, 3, 4]
  1. range(A, B)
    A 부터 B - 1 까지 정수로 범위를 만든다.
b = range(3, 7)
print(list(b))
[3, 4, 5, 6]
  1. range(A, B, C)
    A 부터 B-1 까지 정수로 범위를 만드는데, 앞뒤의 숫자가 C 만큼의 차이를 가진다.
c = range(0, 10, 2)
print(list(c))

[0, 2, 4, 6, 8]

for 반복문과 함께 사용하기

for 숫자 변수 in range

for i in range(5):
    print(str(i) + " 는 " + str(i + 1) + "번째 출력입니다.")
0 는 1번째 출력입니다.
1 는 2번째 출력입니다.
2 는 3번째 출력입니다.
3 는 4번째 출력입니다.
4 는 5번째 출력입니다.

for 반복문과 list 와 range 조합하기

array = [273, 32, 103, 57, 52]      # list 선언하기
for element in array:               # list 에 반복문 적용
    print(element)                  # list element 출력
print()

for i in range(len(array)):         # list 의 length 만큼 range 를 준다
    print("{}번째 요소 : {}".format(i, array[i]))

273
32
103
57
52

0번째 요소 : 273
1번째 요소 : 32
2번째 요소 : 103
3번째 요소 : 57
4번째 요소 : 52

while 반복문

특정 횟수만틈 반복하는 경우에는 for 을 사용했니만
while 반복문은 boolean이 True 인 동안 문장을 계속 반복한다.

while boolean 표현식:
문장

i = 0
while i < 10:
    print('{}번째 반복입니다.'.format(i))
    i += 1
0번째 반복입니다.
1번째 반복입니다.
2번째 반복입니다.
3번째 반복입니다.
4번째 반복입니다.
5번째 반복입니다.
6번째 반복입니다.
7번째 반복입니다.
8번째 반복입니다.
9번째 반복입니다.
list_test = [1, 2, 1, 2,1, 2, 1, 2]
value = 2
while value in list_test:
    list_test.remove(value)
print(list_test)
[1, 1, 1, 1]
import time
time.time()

number = 0
target_tick = time.time() + 5
while time.time() < target_tick:
    number +=1

print('5초동안 {}번 반복했습니다.'.format(number))
5초동안 31879236번 반복했습니다.
i = 0
while True:
    print("{}번째 반복입니다.".format(i + 1))
    i += 1
    # 반복을 종료
    input_text = input("quit??? (y/n) : ")
    if input_text in ["y", "Y"]:
        print("quit")
        break
print()

1번째 반복입니다.
2번째 반복입니다.
3번째 반복입니다.
4번째 반복입니다.
5번째 반복입니다.
quit
numbers = [5, 15, 6, 20, 7, 25]

for number in numbers:
    if number < 10:
        continue
    print(number)
15
20
25

list 에 적용할 수 있는 기본 함수

함수 설명
min() list 내부에서 최솟값을 찾습니다.
max() list 내부에서 최댓값을 찾습니다.
sum() list 내부에서 값을 모두 더합니다.
reversed() list 뒤집기
enumerate() 현재 인덱스가 몇 번째인지 확인하기
items() 딕셔너리로 쉽게 반복문 작성하기
l = [1, 2, 3, 4, 5]
print(min(l))
print(max(l))
print(sum(l))
rl = reversed(l)
print(list(rl))
1
5
15
[5, 4, 3, 2, 1]
l = ['a', 'b', 'c', 'd', 'e']
print(list(enumerate(l)))
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e')]
dictionary_a = {
    "keyA" : "elementA",
    "keyB" : "elementB",
    "keyC" : "elementC"
} 
for key, element in dictionary_a.items():
    print("dictionary[{}] : {}".format(key, element))
print()
dictionary[keyA] : elementA
dictionary[keyB] : elementB
dictionary[keyC] : elementC
array = []
for i in range(0, 20, 2):
    array.append(i*i)
print(array)
[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]
array_a = [i * i for i in range(0, 20, 2)]        # 최종 결과를 맨 앞에 작성(i * i)
print(array_a)
[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]
array_b = ["apple", "banana", "orange", "chocolate"]
output = [fruit for fruit in array_b if fruit != "chocolate"]
print(output)
['apple', 'banana', 'orange']

진수 변환하기

방법 1

value = 60
b = format(value, 'b')      # 2진수 
o = format(value, 'o')      # 8진수
h = format(value, 'x')      # 16진수
print(b)
print(h)
print(o)
print(type(b))
print()
ib = int(b)
print(ib)
print(type(ib))
111100
3c
74
<class 'str'>

111100
<class 'int'>

방법 2

b = '{:b}'.format(60)
print(b)
print(type(b))
print()
ib = int(b)
print(ib)
print(type(ib))
111100
<class 'str'>

111100
<class 'int'>

list 연습문제

1.

numbers = [273, 103, 5, 32, 65, 9, 72, 800, 99]

for n in numbers:
    if n >= 100:
        print('- 100 이상의 수 : {}'.format(n))
    
- 100 이상의 수 : 273
- 100 이상의 수 : 103
- 100 이상의 수 : 800

2.

numbers = [273, 103, 5, 32, 65, 9, 72, 800, 99]

for i in numbers:
    if i % 2 == 0:
        print('{} 는 짝수입니다.'.format(i))
    else:
        print('{} 는 홀수입니다.'.format(i))

for i in numbers:
    print('{} 는 {} 자릿수입니다.'.format(i, len(str(i))))
273 는 홀수입니다.
103 는 홀수입니다.
5 는 홀수입니다.
32 는 짝수입니다.
65 는 홀수입니다.
9 는 홀수입니다.
72 는 짝수입니다.
800 는 짝수입니다.
99 는 홀수입니다.
273 는 3 자릿수입니다.
103 는 3 자릿수입니다.
5 는 1 자릿수입니다.
32 는 2 자릿수입니다.
65 는 2 자릿수입니다.
9 는 1 자릿수입니다.
72 는 2 자릿수입니다.
800 는 3 자릿수입니다.
99 는 2 자릿수입니다.

3.

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

for i in l:
    for j in i:
        print(j)

1
2
3
4
5
6
7
8
9

4.

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

for number in numbers:
    output[(number + 2)%3].append(number)
print(output)
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]