[ Code Kata ] Python # 1 / extend( ) 메서드

haileeyu21·2020년 11월 30일
0

[ Code Kata ]

목록 보기
7/28
post-thumbnail

문제 #1

  • two_sum함수에 숫자 리스트와 '특정 수'를 인자로 넘기면,더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요.
nums: 숫자 배열
target: 두 수를 더해서 나올 수 있는 합계
return: 두 수의 index를 가진 숫자 배열

예를 들어,

nums은 [4, 9, 11, 14]
target은 13 
-
nums[0] + nums[1] = 4 + 9 = 13 이죠?

그러면 [0, 1]이 return 되어야 합니다.

  • 가정
    target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정하겠습니다.

내가 작성한 코드

def two_sum(nums, target):
  nums_index = []
  num1 = 0
  num2 = 0

  for i in nums:
    for j in nums:
      if i + j == target:
        #nums_index.append(num1)
        #nums_index.append(num2)
        nums_index.extend((num1, num2))
        return nums_index
        break
      else:
        num2 += 1
        nums_index.clear()
    num1 += 1

더러워서 맘에 안든다..
아무튼 for 반복문을 두번 돌려서
각 숫자마다 해당하는 target의 값이 나올때까지
list내에서 다른 숫자들과 더하기를 하도록 했다.

다른사람의 코드

def two_sum(nums, target):
	index = 0
    for n in range(index, len(nums)):
    	for i in range(index+1, len(nums)):
        	if nums[n] + nums[i] == target:
        		return[n, i]

깔끔하다.
for loops를 돌릴 때 range를 써도 되는 상황이라면
range를 사용해서 코딩하는 습관을 들여보자!


extend( )

list의 각 요소를 append를 하도록 했었는데
이렇게 되면 append하는 코드가 2줄이 되니까 보기 싫었다..
그래서
"Python how to append multiple items in list"라고 검색했더니
역시나 해답이 있었다

extend( ) 메서드

>>> lst = [1, 2]
>>> lst.append(3)
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]
-
>>> lst.extend([5, 6, 7])
>>> lst.extend((8, 9, 10))
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
-
>>> lst.extend(range(11, 14))
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

👆🏻 이런 식으로 여러 개의 요소를 한번에 추가할 수 있다!

profile
욕심많은 주니어 웹 개발자🐷😎👊🏻🔥 빠이팅입니다

관심 있을 만한 포스트

0개의 댓글