[Python] [review] list/tuple/slicing

LILO Ghim·2021년 11월 8일
0

tuple과 list

replit을 풀면서 완전히 이해가 되지 않았거나, 혹은 온전히 내가 풀지 못했던 것들, 혹은 코드리뷰를 하면서, 질문하면서 새롭게 다시 푼 문제들을 정리해보자!

my_list = [1, 2, 3, 4, 5, 6]

#input으로 주어진 list를 3개의 tuples로 구성된 리스트로 변환하여 return

[(1,2), (3, 4), (5,6)] #출력

(추가개념)
*Tuple의 요소들을 읽어들이는 방법과 slicing 방법은 모두 list와 동일하다

my_tuple[0]
my_tuple[1:2]

*좌표들을 표현할 때 tuple을 사용하면 유용하다


coords = [(4, 4), (5, 2), (-2, 2), (3, 4)]

coords = [[4, 4], [5, 2], [-2, 2], [3, 4]]

이렇게 tuple은 주로 list와 같이 쓰인다. list의 요소들로 tuple을 사용하는 것


앞선 정리에도 언급을 하긴 하였으나, list보다는 tuple이 더 효과적이다. list는 수정이 가능하고 여러 수의 요소들을 저장할 수 있도록 하기 때문에, tuple보다 차지하는 메모리 용량이 더 크다. 더 많은 기능과 flexibility를 제공하기 때문에 어쩔수 없이 용량이 커진다.

하지만 tuple은 제한적인 만큼 용량이 더 작다. 그래서 수정이 필요없고 간단한 형태의 데이터를 표현할 때는 tuple을 사용하는 것이 훨씬 더 효과적이다.


문제풀이

처음에 list를 slicing으로 > 각 list를 tuple로 만든 뒤에, 각 변수에 할당 후 > 빈 list에 추가하는 방식으로 만들었는데,
for문으로 다시 시도하고 내가 작성한 코드와 스승님의 코드를 비교


def convert_list_to_list_of_tuples(my_list):
    final_list = []
    for i in range(0, 6, 2):
    	tuple_list = my_list[i:i+2] 
      	final_list.append(tuple(tuple_list))
    return final_list

print(convert_list_to_list_of_tuples([1, 2, 3, 4, 5, 6]))

-> 리스트를 건너 뛰면서 슬라이싱하고, tuple로 바꾼뒤 빈 list에 할당

def convert_list_to_list_of_tuples(my_list):
	result = []
	temp = []
 	for i in range(0, len(my_list)):
    	    temp.append(my_list[i])
            if i % 2 == 1:
        	result.append(tuple(temp))
      		temp = []
	return result

-> 위 코드의 경우에는 빈 list를 두 개 만들어서 인덱스로 반복문을 돌려서 또 다른 list로 추가 해주고, 홀수번째 인덱스의 list 요소가 나오면 추가 후에 또 다른 list에 추가한 후 원래있던 리스트는 비운다는 개념의 코드

#어떻게 이런 생각을 할 수 있는지,,,,
#정말 다른 코드와 내 코드를 비교리뷰하는 것은 정말 신기함 & 재밌음 & 자괴감 & 현타 & 자격없음 & 권한없음,,,?
profile
킴릴로

0개의 댓글