프로그래머스 파이썬 입문_14차시 리스트 더 알아보기

리냥·2022년 5월 31일
0

프로그래머스 파이썬 입문_14차시 리스트 더 알아보기


1-1. List의 다양한 기능

  • List의 기능
  • list.index( value ) : 값을 이용하여 위치를 찾는 기능
  • list.extend( [value1, value2] ) : 리스트 뒤에 값을 추가
  • list.insert( index, value ) : 원하는 위치에 값을 추가
  • list.sort( ) : 값을 순서대로 정렬
  • list.reverse( ) : 값을 역순으로 정렬

1-2. 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))
  • tip
list에서 값을 이용하여 위치를 찾으려면 index()를 사용하세요.
예를 들어,

list1 = [135, 462, 27, 2753, 234]
print(list1.index(27))   #2가 출력됩니다.
index()에서 에러가 발생하지 않도록 처리하려면 value가 my_list안에 있는지 미리 확인하거나, try/except문을 활용하세요.

예제2

  • 문제
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))
  • tip
문제를 해결하기 위해 리스트의 기능에 대해 알아보아요.

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] 역순으로 정렬됩니다.

2-1. List와 문자열

  • List와 String
  • 리스트와 문자열은 유사하다.
  • 서로 변환이 가능하다.
  • list = str.split( ) : 문자열에서 리스트로
  • " ".join( list ) : 리스트에서 문자열으로

2-2. List와 문자열 실습 하기

예제1

  • 문제
다음 코드는 "오늘은 날씨가 흐림"이라는 문자열을 "오늘은 날씨가 맑음"이라는 문자열로 바꾸는 과정을 보여주고 있습니다. 코드의 안내를 따라 빈 부분을 작성해 보세요.

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)
  • tip
예를 들어,

str = "10:35:27"
list = str.split(":")             #문자열을 ":"기준으로 리스트화
new_str = ":".join(list)          #리스트를 ":"기준으로 문자열화
이처럼 ":"을 기준으로 문자열과 리스트를 서로 변환 할 수 있습니다.

3-1. Slice

  • slicing
  • 리스트나 문자열에서 값을 여러개 가져오는 기능
python
text = "hello world"
text = text[ 1:5 ]

list = [ 0, 1, 2, 3, 4, 5 ]
list = list[ 1:3 ]
  • slice를 하면 해당하는 부분의 리스트나 문자열을 새로 만들어 준다.
  • 시작과 끝부분을 얻어 오는 방법
  • list[ 2: ] : 2번째부터 끝까지 반환
  • list[ : 2 ] : 처음부터 2번째 까지 반환
  • list[ : ] : 처음부터 끝까지 전부 반환

3-2. Slice 실습 하기

예제1

  • 문제
다음 지시를 따르도록 코드의 빈칸을 채워 보세요.

문제를 해결하기 위해 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))
  • tip
Slicing
리스트나 문자열에서 여러개의 값을 가져오는 기능입니다.
예를 들어,

text = "hello world"
text[1:5]         # ello          1번째부터 5번째 전까지
text[3:]          # lo world      3번째부터 끝까지
text[:3]          # hel           처음부터 3번째까지
text[:]           # hello world   처음부터 끝까지


예제2

  • 문제
함수 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)
  • tip
try:
    ...
    raise 에러종류
    ...
except 에러종류:
    # 처리할 코드

4-1. Slice의 step

  • step
  • slice한 값의 범위에서 step 값을 주어 그 값만큼 건너뛰어 가져오는 기능
  • list[ 시작값:끝값:step ]

4-2. Slice의 step 실습 하기

예제1

  • 문제
주석의 지시에 따라 코드를 완성해 보세요.
  • 코드
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)
  • tip
step을 이용하면 slice한 값의 범위에서 step값을 주어 그 값만큼 건너뛰어 가져올 수 있습니다.
list[시작값 : 끝값 : step] 이러한 형식으로 사용할 수 있습니다.

예를 들어,

list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list[2:8:2]          # [3, 5, 7]이 출력됩니다.

5-1. Slice로 리스트 수정하기

  • slice 활용

  • 삭제
    del list[ :5 ] : 처음부터 5번째까지 삭제

  • 수정
    list[ 1:3 ] = [ 77, 88 ]
    list[ 1:3 ] = [ 77, 88 ,99 ] : 더 많은 개수로 변환
    list[ 1:4 ] = [ 8 ] : 더 적은 개수로 변환

5-2. Slice로 리스트 수정하기 실습 하기

예제1

  • 문제
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))
  • tip
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]

profile
안녕하세요. 일로 인해 잠시 쉽니다 :)

0개의 댓글