List의 기능
safe_index함수는 mylist와 value를 매개변수로 받아, mylist에서 value의 인덱스를 return하는 함수입니다. safe_index함수를 완성해 보세요. 단, value가 my_list안에 없으면 None을 리턴해야 합니다.
def safe_index(my_list, value):
# 함수를 완성하세요
if
value in my_list:
return my_list.index(value)
else:
return None
print(safe_index([1,2,3,4,5], 5))
print(safe_index([1,2,3], 5))
list에서 값을 이용하여 위치를 찾으려면 index()를 사용하세요.
예를 들어,
list1 = [135, 462, 27, 2753, 234]
print(list1.index(27)) #2가 출력됩니다.
index()에서 에러가 발생하지 않도록 처리하려면 value가 my_list안에 있는지 미리 확인하거나, try/except문을 활용하세요.
insert(), sort(), reverse()를 사용해서 다음 코드에 주석으로 적힌 내용을 만들어 보세요.
list1 = [1, 2, 3, 4]
# 아래줄에서 list1의 1번째 자리에 8을 넣고 원래 있던 값은 오른쪽으로 밀어 보세요.
list1.insert(0, 8)
print("첫 번째 자리에 8을 넣은 결과 : {}".format(list1))
# 아래줄에서 list1을 작은 수부터 큰 수로 정렬해 보세요
list1.sort()
print("list1을 작은 수부터 큰 수로 정렬한 결과 : {}".format(list1))
# 아래줄에서 list1을 거꾸로 만들어 보세요
list1.reverse()
print("list1을 거꾸로 정렬한 결과 : {}".format(list1))
문제를 해결하기 위해 리스트의 기능에 대해 알아보아요.
list.insert(index, value) : 원하는 위치에 값을 추가합니다
list = [1, 2, 3]
list.insert(3, 4) #list = [1, 2, 3, 4]로 4가 추가되었습니다.
list.sort() : 값을 순서대로 정렬
list = [3, 5, 6, 4, 2, 1]
list.sort() #list = [1, 2, 3, 4, 5, 6]으로 정렬됩니다.
list.reverse() : 값을 역순으로 정렬
list = [3, 5, 6, 4, 2, 1]
list.reverse() #list = [1, 2, 4, 6, 5, 3] 역순으로 정렬됩니다.
List와 String
다음 코드는 "오늘은 날씨가 흐림"이라는 문자열을 "오늘은 날씨가 맑음"이라는 문자열로 바꾸는 과정을 보여주고 있습니다. 코드의 안내를 따라 빈 부분을 작성해 보세요.
List와 String의 유사성을 이용해 보세요.
리스트와 문자열은 서로 변환할 수 있습니다.
str = "오늘은 날씨가 흐림"
# split()을 이용해서 str을 공백으로 나눈 문자열을 words에 저장하세요
words = str.split(" ")
# index()를 이용해서 "흐림"이 words의 몇번째에 있는지 찾고,
# position에 저장하세요.
position = words.index("흐림")
words[position] = "맑음"
# join()을 이용해서 words를 다시 문자열로 바꿔 new_str에 저장하세요.
# words를 문자열로 바꿀때는 공백 한 칸을 기준으로 붙이면 됩니다.
new_str = " ".join(words)
print(new_str)
예를 들어,
str = "10:35:27"
list = str.split(":") #문자열을 ":"기준으로 리스트화
new_str = ":".join(list) #리스트를 ":"기준으로 문자열화
이처럼 ":"을 기준으로 문자열과 리스트를 서로 변환 할 수 있습니다.
slicing
python
text = "hello world"
text = text[ 1:5 ]
list = [ 0, 1, 2, 3, 4, 5 ]
list = list[ 1:3 ]
다음 지시를 따르도록 코드의 빈칸을 채워 보세요.
문제를 해결하기 위해 Slice를 해봅시다.
rainbow = ["빨", "주", "노", "초", "파", "남", "보"]
# red_colors가 ["빨", "주", "노"]의 값을 가지도록 rainbow를 slice하세요.
red_colors = rainbow[ :3]
#blue_colors가 ["파", "남", "보"]의 값을 가지도록 rainbow를 slice하세요.
blue_colors = rainbow[ 4: ]
print("red_colors의 값 : {}".format(red_colors))
print("blue_colors의 값 : {}".format(blue_colors))
Slicing
리스트나 문자열에서 여러개의 값을 가져오는 기능입니다.
예를 들어,
text = "hello world"
text[1:5] # ello 1번째부터 5번째 전까지
text[3:] # lo world 3번째부터 끝까지
text[:3] # hel 처음부터 3번째까지
text[:] # hello world 처음부터 끝까지
함수 substring은 문자열 str을 받아서 start부터 end 이전까지에 해당하는 문자열을 return하는 함수입니다. 코드의 2번째 줄의 빈칸을 채워 substring함수를 완성해 보세요. 단, slice를 이용해야 합니다.
def substring(text, start, end):
return text
[start:end]
my_text = "Hello world"
between_2_5 = substring(my_text, 2, 5)
print(between_2_5)
try:
...
raise 에러종류
...
except 에러종류:
# 처리할 코드
step
주석의 지시에 따라 코드를 완성해 보세요.
list1 = list(range(20))
# new_list가 5, 8, 11, 14의 값을 가지도록 list1을 slice하세요
new_list = list1[5:15:3]
print(new_list)
# reverse_list가 17, 13, 9, 5의 값을 가지도록 list1을 slice하세요
reverse_list = list[5:18:4]
print(reverse_list)
step을 이용하면 slice한 값의 범위에서 step값을 주어 그 값만큼 건너뛰어 가져올 수 있습니다.
list[시작값 : 끝값 : step] 이러한 형식으로 사용할 수 있습니다.
예를 들어,
list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list[2:8:2] # [3, 5, 7]이 출력됩니다.
slice 활용
삭제
del list[ :5 ] : 처음부터 5번째까지 삭제
수정
list[ 1:3 ] = [ 77, 88 ]
list[ 1:3 ] = [ 77, 88 ,99 ] : 더 많은 개수로 변환
list[ 1:4 ] = [ 8 ] : 더 적은 개수로 변환
slice로 리스트를 수정하는 방법을 알아봅시다. 주석에 적힌 지시에 따라 코드를 작성해 보세요.
list1 = [0, 1, 2, 3, 4, 5]
# list1의 1부터 3까지를 slice를 이용해서 각각 11, 22, 33으로 바꿔보세요.
# 바꾸고 나면 list1은 [0, 11, 22, 33, 4, 5]가 되어야 합니다.
list1[1:4] = [11, 22, 33]
list2 = [0, 1, 2, 3, 4, 5]
# list2의 1부터 3까지를 del과 slice를 이용해서 지워보세요
# 바꾸고 나면 list2은 [0, 4, 5]가 되어야 합니다.
del list2[1:4]
print("list1 : {}, list2 : {}".format(list1, list2))
slice로 리스트를 수정하는 방법은 아래와 같습니다.
list1 = list(range(10)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del list[:5] # 처음부터 5번째까지 삭제 [6, 7, 8, 9]
list[1:3] = [77, 88] # 1번째부터 3번째까지의 값을 수정 [6, 77, 88, 9]
list[1:3] = [77, 88, 99] # 더 많은 개수로 변환 [6, 77, 88, 99, 9]
list[1:4] = [8] # 더 적은 개수로 변환 [6, 8, 9]