마케팅/데이터 분석
[파이썬] 리스트/사전과 for 반복문
퍼포마첼라
2025. 2. 24. 16:19
리스트
리스트와 요소, 인덱싱
# 리스트 (list)
numbers = [2, 3, 5, 7, 11, 13]
names = ['윤수',' 혜린', '태호', '영훈']
print(numbers)
print(names)
# [2, 3, 5, 7, 11, 13]
# ['윤수', ' 혜린', '태호', '영훈']
#인덱싱 (indexing)
print(names[1]) #혜린
print(numbers[1] + numbers[3]) #10
num_1 = numbers[1]
num_3 = numbers[3]
print(num_1 + num_3) #10
#마이너스 인덱싱
print(numbers[-1]) #13
print(numbers[-6]) #2
#리스트 슬라이싱 (list slicing)
print(numbers[0:4]) #[2, 3, 5, 7]
print(numbers[4:]) #[11, 13]
print(numbers[:3]) #[2, 3, 5]
new_list = numbers[:3] #[2, 3, 5]
print(new_list[2]) #5
numbers[0] = 7
print(numbers) #[7, 3, 5, 7, 11, 13]
numbers[0] = numbers[0] + numbers[1]
print(numbers) #[10, 3, 5, 7, 11, 13]
리스트 함수
numbers = []
#len : 리스트 길이
print(len(numbers)) #0
numbers = []
#append : 리스트에 요소 추가
numbers.append(5)
numbers.append(8)
print(numbers) #[5, 8]
print(len(numbers)) #2
numbers = [2,3,5,7,11,13,17,19]
# del : 리스트 요소 지우기
del numbers[1]
print(numbers) #[2, 5, 7, 11, 13, 17, 19]
numbers = [2,3,5,7,11,13,17,19]
# insert : 원하는 위치에 요소 삽입
numbers.insert(4, 37)
print(numbers) #[2, 3, 5, 7, 37, 11, 13, 17, 19]
리스트 정렬
sorted
기존 리스트는 건드리지 않고, 정렬된 새로운 리스트를 리턴
numbers = [19,13,2,5,3,11,7,17]
new_list = sorted(numbers)
print(numbers) #[19, 13, 2, 5, 3, 11, 7, 17]
#sorted 함수는 정렬된 리스트를 리턴할 뿐 리스트를 바꾸지 않는다.
#오름차순 정렬
new_list = sorted(numbers)
print(new_list) #[2, 3, 5, 7, 11, 13, 17, 19]
#내림차순 정렬
new_list = sorted(numbers, reverse = True)
print(new_list) #[19, 17, 13, 11, 7, 5, 3, 2]
sort
아무것도 리턴하지 않고, 기존 리스트를 정렬
numbers = [19,13,2,5,3,11,7,17]
print(numbers.sort()) #None
#sort()는 numbers를 정렬할 뿐 리턴값이 없다.
numbers.sort()
print(numbers) #[2, 3, 5, 7, 11, 13, 17, 19]
numbers.sort(reverse = True)
print(numbers) #[19, 17, 13, 11, 7, 5, 3, 2]
리스트 인덱싱 연습
greetings = ["안녕", "니하오", "곤니찌와", "올라", "싸와디캅", "헬로", "봉주르"]
# 여기에 코드를 작성하세요
i = 0
while i < len(greetings) :
print(greetings[i])
i += 1
#안녕
#니하오
#곤니찌와
#올라
#싸와디캅
#헬로
#봉주르
리스트 함수 활용
# 빈 리스트 만들기
numbers = []
print(numbers) #[]
# numbers에 값들 추가
# 코드를 입력하세요
numbers.append(1)
numbers.append(7)
numbers.append(3)
numbers.append(6)
numbers.append(5)
numbers.append(2)
numbers.append(13)
numbers.append(14)
print(numbers) #[1, 7, 3, 6, 5, 2, 13, 14]
# numbers에서 홀수 제거
# 코드를 입력하세요
del numbers[0]
del numbers[0]
del numbers[0]
del numbers[1]
del numbers[2]
print(numbers) #[6, 2, 14]
# numbers의 인덱스 0 자리에 20이라는 값 삽입
# 코드를 입력하세요
numbers.insert(0, 20)
print(numbers) #[20, 6, 2, 14]
# numbers를 정렬해서 출력
# 코드를 입력하세요
numbers.sort()
print(numbers) #[2, 6, 14, 20]
# numbers에서 홀수 제거
# 코드를 입력하세요
i = 0
while i < len(numbers):
if numbers[i] % 2 == 1:
del numbers[i]
else:
i += 1
print(numbers) #[6, 2, 14]
리스트에서 값의 존재 확인
#리스트에 값이 있는지 확인
primes = [2, 3, 5, 7, 11, 13, 17, 19, 23]
print(7 in primes)
print(12 in primes)
#True
#False
#리스트에 값이 없는지 확인
primes = [2, 3, 5, 7, 11, 13, 17, 19, 23]
print(7 not in primes)
print(12 not in primes)
#False
#True
for 반복문
상황에 따라 while보다 코드가 더 깔끔할 수 있다.
for i in [1,2,3,4,5,6] :
print(i)
range 함수
장점
간편함, 깔끔함, 메모리 효율성
#파라미터 1개 버전
for i in range(stop):
print(i)
#0부터 stop-1까지의 범위
#파라미터 2개 버전
for i in range(start, stop):
print(i)
#start부터 stop-1까지의 범위
#파라미터 3개 버전
for i in range(start, stop, step):
print(i)
#start부터 stop-1까지의 범위, 간격 step
range 연습
numbers = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
# 인덱스와 원소 출력
# 여기에 코드를 작성하세요
for i in range(len(numbers)):
print(i, numbers[i])
# 0 2
# 1 3
# 2 5
# 3 7
# 4 11
# 5 13
# 6 17
# 7 19
# 8 23
# 9 29
# 10 31
for문 구구단
num1 = 1
num2 = 1
max_num = 9
for i in range(max_num):
num1 = i + 1
for j in range(max_num):
num2 = j + 1
print(num1,"*",num2,"=",num1 * num2)
# 모범답안
for i in range(1, 10):
for j in range(1, 10):
print("{} * {} = {}".format(i, j, i * j))
사전
#사전 (dictionary)
# key-value pair (키-값)
my_dictionary = {
5: 25,
2: 4,
3: 9
}
#타입 확인하기
print(type(my_dictionary)) #<class 'dict'>
#불러오기
print(my_dictionary[3]) #9
#추가하기
my_dictionary[9] = 81
print(my_dictionary) #{5: 25, 2: 4, 3: 9, 9: 81}
#키가 정수형일 필요는 없다
my_family = {
'엄마': '김자옥',
'아빠': '이석진',
'아들': '이동민',
'딸': '이지영'
}
print(my_family['딸']) #이지영
사전 활용법
my_family = {
'엄마': '김자옥',
'아빠': '이석진',
'아들': '이동민',
'딸': '이지영'
}
#어떤 값이 있는지 확인하기
print(my_family.values())
#dict_values(['김자옥', '이석진', '이동민', '이지영'])
#특정 값이 있는지 확인하기
print('이지영' in my_family.values()) #True
#반복문
for value in my_family.values():
print(value)
# 김자옥
# 이석진
# 이동민
# 이지영
#키만 불러오기
print(my_family.keys())
#dict_keys(['엄마', '아빠', '아들', '딸'])
#반복문
for key in my_family.keys():
print(key)
# 엄마
# 아빠
# 아들
# 딸
for key in my_family.keys():
value = my_family[key]
print(key, value)
# 엄마 김자옥
# 아빠 이석진
# 아들 이동민
# 딸 이지영
for key, value in my_family.items():
print(key, value)
# 엄마 김자옥
# 아빠 이석진
# 아들 이동민
# 딸 이지영
실습
# 투표 결과 리스트
votes = ['김영자', '강승기', '최만수', '김영자', '강승기', '강승기', '최만수', '김영자', \
'최만수', '김영자', '최만수', '김영자', '김영자', '최만수', '최만수', '최만수', '강승기', \
'강승기', '김영자', '김영자', '최만수', '김영자', '김영자', '강승기', '김영자']
# 후보별 득표수 사전
vote_counter = {}
# 리스트 votes를 이용해서 사전 vote_counter를 정리하기
kim_num = 0
kang_num = 0
choi_num = 0
for name in votes:
# 여기에 코드를 작성하세요
if name == '김영자':
kim_num += 1
elif name == '강승기':
kang_num += 1
elif name == '최만수':
choi_num +=1
else :
print('없음')
# print(kim_num, kang_num, choi_num)
vote_counter['김영자'] = kim_num
vote_counter['강승기'] = kang_num
vote_counter['최만수'] = choi_num
# 후보별 득표수 출력
print(vote_counter)
#결과
#{'김영자': 11, '강승기': 6, '최만수': 8}
#모범답안
# 투표 결과 리스트
votes = ['김영자', '강승기', '최만수', '김영자', '강승기', '강승기', '최만수', '김영자', \
'최만수', '김영자', '최만수', '김영자', '김영자', '최만수', '최만수', '최만수', '강승기', \
'강승기', '김영자', '김영자', '최만수', '김영자', '김영자', '강승기', '김영자']
# 후보별 득표수 사전
vote_counter = {}
# 리스트 votes를 이용해서 사전 vote_counter를 정리하기
for name in votes:
if name not in vote_counter:
vote_counter[name] = 1
else:
vote_counter[name] += 1
# 후보별 득표수 출력
print(vote_counter)
코드잇 6.리스트/사전과 for 반복문