프리랜서의 모든 것
Python으로 개발을 하다 보면 여러 데이터를 순서에 맞게 관리하기 위한 자료구조가 필요합니다. 이럴 때 자주 사용되는 자료구조가 List인데요, List 자료구조를 코드에서 사용하는 경우 데이터의 저장과 조회 방식이 프로그램 성능에 중요한 부분을 차지하게 됩니다.
Python 개발자가 Python List을 사용할 때 데이터 사용에 대한 고려 없이 활용한다면 프로그램의 성능을 크게 저하시킬 수 있습니다. 불필요한 성능 저하를 방지하고 간결한 코드 작성을 위한 Python List의 유용한 기능과 성능 개선 방법을 알려드리겠습니다.
프로그래밍에서 List 자료구조는 순서가 있는 정보들을 저장하고 빠르게 검색하기 위해서 사용되는 자료구조입니다.
파이썬 리스트(Python List)는 개발자가 자료구조를 직접 구현하지 않더라도 활용할 수 있는 파이썬 내장 데이터 타입 중 하나로, 딕셔너리(Dictionary)와 함께 널리 사용되며, 여러 개의 항목을 순서대로 저장할 수 있는 가변적인 시퀀스입니다.
파이썬 딕셔너리(Python Dictionary)를 활용한 데이터 처리 방법
Python List를 사용하는 방법을 알려드리기 위해 먼저 Python List를 생성하는 방법을 알려드리겠습니다.
Python List는 대괄호 []로 정의되며, 각 항목은 쉼표,로 구분하여 사용할 수 있습니다. List 안에는 숫자, 문자 등 다양한 타입의 자료형을 넣어 관리할 수 있습니다.
empty_list = list()
print( empty_list ) # output: []
my_list = [ 1, 2, 3, 4 ]
print( my_list ) # output: [1, 2, 3, 4]
str_list = [ "Hello", "List", "world" , 100 ]
print( str_list ) # output: ['Hello', 'List', 'world', 100]
프로그램 구현 시 빠르고 간결한 코드를 작성하기 위해서는 적절한 자료구조를 결정하는 것이 매우 중요합니다. 자료구조의 특징을 잘 파악하면 코드를 효율적으로 작성할수 있는데요, Python List를 상황에 맞춰 적절히 사용할 수 있도록 주요 특징을 알려드리겠습니다.
Python List는 크기의 조절이 가변적인 자료구조입니다. 가변이란 모양이나 성질이 바뀌거나 달라질 수 있는 것을 의미하는데요.
List를 생성한 후에도 요소를 추가, 삭제, 수정할 수 있으며 이미 저장된 데이터 중간에도 새로운 값을 추가할 수 있으며 다양한 자료형의 데이터 저장도 가능합니다.
List는 데이터의 순서를 유지하여 저장합니다. 숫자형 인덱스를 사용하여 특정 순서의 요소에 바로 접근이 가능하며 이런 순서 유지 특성을 이용하여 특정 순서의 데이터를 활용하거나 순서가 정렬된 데이터를 출력하는데 활용할 수 있습니다.
Python List는 슬라이싱이 가능한 자료구조입니다. 슬라이싱은 리스트의 특정 부분을 추출하는 기능을 제공해 개발자가 List의 원하는 부분만 사용하도록 도와주어 불필요한 데이터를 리스트에서 제외할 수 있습니다.
지금까지 Python List의 주요 특징을 알아보았습니다. Python List의 가변적인 특성 덕분에 코드 구성이 깔끔해져 유지보수를 쉽고 빠르게 하도록 도움이 되는데요. 다음은 이러한 특징을 바탕으로 Python에서 List가 어떻게 활용되는지 활용방법에 대해 알려드리겠습니다.
Python List의 인덱싱과 슬라이싱은 리스트의 요소에 접근하고 부분 리스트를 추출하는 데 매우 유용한 기능입니다. List 활용 시 인덱싱과 슬라이싱이 어떻게 활용되는지에 대해 설명드리겠습니다.
인덱싱은 List의 특정 위치에 있는 요소에 접근하는 방법입니다. Python List는 0부터 시작하는 인덱스를 사용하며 음수 인덱스를 사용하면 List의 끝에서부터 요소에 접근할 수 있습니다.
my_data = [1, 2, 3, [4, 5, 6]]
print(my_data[0]) # 1
print(my_data[-1]) # 마지막 요소 값, [4, 5, 6]
print(my_data[-2]) # 뒤에서 두번 째 요소 값, 3
print(my_data[3]) # [4, 5, 6]
Python 슬라이싱은 List의 일부분을 추출하는 방법입니다. 슬라이싱을 이용하면 불필요한 데이터를 제외하고 원하는 데이터만을 추출하여 사용할 수 있다는 장점이 있습니다.
슬라이싱의 기본 문법은 list[start:end:step]이며, 시작 인덱스는 포함되지만 끝 인덱스는 포함되지 않는 것이 특징입니다.
my_data = [1, 2, 3, 4, 5, 6]
print(my_data[1:]) # Index 1부터 출력 [2, 3, 4, 5, 6]
print(my_data[2:4]) # Index 2, 3 출력 [3, 4]
print(my_data[0::2]) # Index 0부터 2칸씩 이동 [ 1, 3, 5 ]
my_data[0:2] = [9, 9] # 슬라이싱을 이용한 수정
print(my_data) # [9, 9, 3, 4, 5, 6]
지금까지 Python List 활용의 근간이 되는 인덱싱과 슬라이싱에 대해 알아보았습니다. List에 저장된 값을 활용하려면 필요한 부분만 빠르게 확인해야 하는데 인덱싱은 특정 위치의 데이터를 조회할 수 있도록 도와줍니다.
그리고 슬라이싱은 리스트에서 필요한 데이터를 바로 추출할 수 있게 도와주어 두 기능을 잘 활용하면 코딩 작업 시간을 확연하게 줄일 수 있습니다.
인덱싱과 슬라이싱은 Python List를 활용하기 위한 가장 기본적인 기능입니다. 이제 기본적인 활용을 넘어서 Python List에서 제공하는 유용한 함수들을 통해 더 간결하고 효율적으로 코드를 작성하는 방법에 대해 알려드리겠습니다.
Python List에서는 데이터 항목 추가, 제거, 정렬 등 여러 작업을 돕는 함수를 제공합니다. 이러한 함수들을 잘 활용하면 불필요한 코드를 제거해 코드가 간결해지고 알아보기 편해 코드 작성을 쉽게 할 수 있습니다. List에서 많이 사용되는 핵심 함수들을 소개해 드리겠습니다.
append() 함수는 리스트의 끝에 항목을 추가합니다. append를 사용하지 않더라도 덧셈 연산자를 통해 항목의 추가가 가능하지만, append 함수를 통해 직관적인 코드 작성이 가능합니다.
test_list = [1, 2, 3]
test_list.append(4) # append 함수를 이용한 추가, [1, 2, 3, 4]
test_list += [ 5 ] # 연산자를 이용한 요소 추가, [1, 2, 3, 4, 5]
sort() 함수는 리스트를 정렬합니다. 숫자 문자열 등 저장된 모든 데이터를 손쉽게 정렬해 줌으로써 데이터를 사용하기 전에 List를 사용하기 좋은 상태로 만들어 둘 수 있습니다.
test_list = [1, 2, 3, 9, 5, 0]
test_list.sort()
print( test_list ) # [0, 1, 2, 3, 5, 9]
test_list.sort(reverse=True)
print( test_list ) # [9, 5, 3, 2, 1, 0]
Index() 함수는 List 내에서 특정 값의 첫 번째 발생 위치(인덱스)를 반환하는 메서드입니다. 이 함수는 찾고자 하는 값이 리스트에 없을 경우 ValueError 예외를 발생시킵니다.
score = [10, 20, 30, 40, 50, 20]
index = score.index(20)
print(index) # 출력: 1
extend() 함수는 List를 확장하여 다른 List의 모든 항목을 추가합니다. 기존 List에 새로운 List를 더해 확장하는 기능을 제공합니다. 덧셈 연산자를 이용하면 extend와 동일한 기능을 구현할 수 있습니다.
list_1 = [9, 0]
list_2 = [3, 4]
list_1.extend(list_2)
print(list_1) # [9, 0, 3, 4]
print(list_1 + list_2) # [9, 0, 3, 4, 3, 4]
요즘 알고리즘을 활용한 데이터 작업의 수요가 늘고 있어 파이썬을 활용해 알고리즘 작업을 하는 일이 많아지고 있습니다. 파이썬이 언어 특성상 속도가 느리다는 단점이 있었는데 이럴 때 List를 활용하면 알고리즘의 성능을 개선할 수 있습니다.
백문이 불여일견, Python List를 활용해 알고리즘 작업 성능을 개선하는 방법을 보여드리겠습니다.
List에 저장된 값은 정렬을 통해 빠른 탐색이 가능합니다. 프로그램에서 만들어진 점수를 통해 순서를 조회하는 기능을 구현한다고 생각해 보겠습니다. 아래와 같은 점수 데이터가 있을 때 N 등이 몇 점인지 알기 위해서는 정렬이 필요합니다.
score = [10, 8, 5, 2, 0, 3, 9, 25, 28, 30, 15, 10, 12 ]
score.sort()
print(score) # [0, 2, 3, 5, 8, 9, 10, 10, 12, 15, 25, 28, 30]
print(score[-3]) # 3등은 25점 ( index=-3으로 한번에 조회 )
정렬을 한 뒤에는 앞에서부터 순차적으로 등수가 나오기 때문에 몇 등이 몇 점인지 바로 인덱스로 바로 확인이 가능합니다. List의 정렬 기능이 없었다면 List 안의 모든 정보를 순회하면서 조회하고 세 번째로 큰 값이 나왔을 때 출력을 하는 코드를 작성해야 했을 것입니다.
정렬된 데이터에 대해 조회 요청이 많은 경우에는 이진 탐색 알고리즘을 통해 탐색 속도를 한층 더 빠르게 올릴 수 있습니다.
List에는 index라는 유용한 함수가 있지만, 정렬된 데이터에 대한 이진 탐색은 더 빠른 연산속도를 제공하는데요, 이진 탐색은 리스트가 정렬되어 있을 때 사용할 수 있는 효율적인 탐색 방법이며, 탐색 범위를 절반씩 줄여가면서 목푯값을 찾습니다.
def binary_search(score_lst, target):
lookup_count = 0
left, right = 0, len(score_lst) - 1
while left <= right:
lookup_count += 1
mid = (left + right) // 2
if score_lst[mid] == target:
print( f"Found in {lookup_count} times")
return mid # 찾은 경우 인덱스 반환
elif score_lst[mid] < target:
left = mid + 1
else:
right = mid - 1
print( f"Found in {lookup_count} times")
return -1 # 찾지 못한 경우 -1 반환
score = [10, 8, 5, 2, 0, 3, 9, 25, 28, 30, 15, 10, 12 ]
score.sort()# [0, 2, 3, 5, 8, 9, 10, 10, 12, 15, 25, 28, 30]
# 출력: 3 등, 4번 만에 탐색
print( len(score) - binary_search(score, 25), "등")
# 출력: 13 등, 3번 만에 탐색
print( len(score) - binary_search(score, 0), "등")
이진 탐색으로 정렬된 데이터를 조회하는 경우 시간 복잡도가 O(log n)으로 상당히 빠른 조회 성능을 보장합니다.
물론 데이터가 커지는 경우 처음 정렬하는 과정에서 시간이 오래 소요된다는 단점이 있지만, 한번 정렬된 이후로는 탐색시간이 상당히 빨라지는 장점이 있어 데이터 추가가 빈번하지 않고 조회가 많은 서비스에서 활용하기에 적합한 탐색 알고리즘입니다.
Python List를 이진 탐색과 함께 사용하게 된다면 빠른 성능을 통한 사용자 경험 개선이 가능해질 것입니다.
Python List는 각종 편의 기능을 가지고 있는 자료구조입니다. List를 활용하면 다양한 자료형의 데이터를 순서대로 저장하고 필요한 만큼 빠르게 찾아 조회할 수 있으며 이를 지원하기 위한 다양한 기능들도 제공하고 있습니다.
개발 중인 Python 프로그램에서 관리되는 정보의 순서가 중요하다면 Python List에 저장하고 관리해 보세요. 인덱싱과 슬라이싱, 그리고 다양한 함수를 통해 조회기능를 기존보다 더 빠르고 쉽게 구현하실 수 있을 것입니다.
IT 프로젝트 찾기 어려우시죠?
대한민국 No.1 IT 인재 매칭 플랫폼 이랜서에서
맞춤형 프로젝트를 매칭해 드립니다!
이랜서는 24년의 노하우와 데이터를 바탕으로 IT 전문가에게 맞춤형 프로젝트를 매칭하는 IT 인재 매칭 플랫폼입니다.
알고리즘, ERP, AI 프로젝트 등 파이썬을 활용하는 다양한 프로젝트부터 Java, JavaScript, React, Vue, Angular, PHP, jQuery를 활용한 웹 개발 프로젝트, Node js, TypeScript, C 언어, C++, Next js, NestJS를 활용해 서버를 관리하는 백엔드 프로젝트, Flutter, Swift, Dart 언어, Kotlin, React Native, .Net,을 활용하는 모바일 앱 개발 프로젝트, SQL 전문가, DA, DBA, ETL등을 활용한 데이터 프로젝트, UI/UX 디자인, PM, PO, 서비스 기획자를 위한 UI/UX 디자인 & 기획 프로젝트 등 다양한 분야의 프로젝트를 약 40만의 IT 프리랜서에게 매칭하며, IT 프로젝트에 맞춤형 IT 전문가를 매칭하고 있습니다.
24년의 노하우와 데이터를 활용한 맞춤형 매칭 서비스
이랜서를 사용하는 기업들의 프로젝트 재의뢰율 98%
대기업 프로젝트부터 모바일 앱 / 웹 애플리케이션 개발, ERP, SAP를 활용한 전산 개발 / 유지보수 프로젝트까지 다양한 프로젝트를 진행하는 IT 기업들이 이랜서를 통해 맞춤형 IT 전문가를 매칭받고 있습니다.
“이랜서 매니저님들께서 역량과 성향, 이력을 잘 분석해
필요한 프로젝트에 잘 매칭해 주십니다.”
프로젝트가 나와 안맞으면 어떻하나 걱정하신 적 많으시죠? 이랜서라면 걱정 없습니다.
이랜서는 24년의 노하우와 데이터를 바탕으로 IT 전문가의 역량과 업무 성향, 이력을 모두 분석하여 IT 전문가에게 가장 잘 맞는 프로젝트에 매칭합니다. 데이터를 활용한 맞춤형 매칭에 IT 전문가를 포함하여 기업까지 만족하며 프로젝트 재의뢰율 98%를 이루고 있습니다. 불경기로 인해 프로젝트 수주가 걱정이라면 이랜서를 활용해보세요.
AI가 데이터를 바탕으로 경력 & 이력 정리를 도와주는
자동 경력 서비스 ‘오토폴리오’로 경력 관리도 간편하게
프로젝트에 집중하기 바쁜데 경력 관리하기 불편하셨죠? 이제 ‘오토폴리오’에게 맡기세요.
오토폴리오는 이랜서에서 독자 개발한 경력 & 이력 자동관리 서비스입니다. 초기 1회만 업데이트하면 프로젝트에 맞춰 AI가 데이터를 바탕으로 경력 기술서와 이력서를 최신 상태로 업데이트해주니 새 프로젝트에 매칭될 확률도 높아집니다.
경기 불황으로 어려워지는 프로젝트 수주
이랜서와 함께라면 걱정 없습니다.
경기가 불안정해질수록 프로젝트 수주는 안전한 곳에서 해야 합니다. 이랜서는 24년의 데이터와 노하우를 사용하여 IT 전문가를 지원하며, Customized 된 프로젝트를 매칭해 드립니다.
빠르게 변화하는 IT 업계 속에서 혼자 힘겹게 싸우지 마세요. 이랜서가 24년의 경험과 데이터를 바탕으로 든든하게 도와드립니다.
이랜서 추천! 개발자가 알려주는 개발 지식 활용 콘텐츠
▶️ [Javascript 문법] 문자열 자르기부터 복잡한 문자열 총정리!
▶️ 정규 표현식; 자바 정규식을 활용해서 문자열을 손쉽게 처리하는 방법
▶️ Maven vs Gradle, 20년차 개발자는 실무에서 이렇게 활용합니다.
이랜서 추천! 서비스 효율을 높이는 성공 콘텐츠
▶️ ERP 프로그램이란? ERP 뜻부터 구축 방법까지 종합가이드
▶️ 고객 여정 지도, ‘N사‘ 서비스 기획자는 이렇게 만듭니다.
▶️ UX 디자인의 일관성을 높이는 디자인 시스템 가이드 작성 비법과 사례