본문 바로가기
파이썬기초(Python Basic)

파이썬 리스트

by 친절한에릭 2023. 4. 23.

안녕하세요! 오늘은 파이썬 프로그래밍 언어에서 매우 중요한 자료구조인 '리스트'에 대해 알아보려고 합니다. 리스트는 프로그래밍을 배울 때 가장 먼저 접하게 되는 자료구조 중 하나이며, 매우 유연하고 강력한 도구입니다. 이 글에서는 리스트의 기본 개념부터 다양한 활용 방법까지 여러 예제와 함께 알아보겠습니다.

 

파이썬 리스트란 무엇인가요?

파이썬 리스트는 여러 개의 값을 저장할 수 있는 자료구조입니다. 리스트는 대괄호([])를 사용하여 생성되며, 값은 쉼표(,)로 구분됩니다. 리스트의 각 값은 인덱스(순번)에 의해 접근할 수 있습니다. 인덱스는 0부터 시작하며, 음수 인덱스를 사용하여 역순으로 접근할 수도 있습니다.

리스트 생성하기

리스트를 생성하는 방법에는 여러 가지가 있습니다. 여기서는 두 가지 방법을 알아보겠습니다.

빈 리스트 생성하기

빈 리스트는 아래와 같이 생성할 수 있습니다.

 

empty_list = []

 

또는 다음과 같이 list() 함를 사용하여 생성할 수도 있습니다.

 

empty_list = list()

 

값을 포함한 리스트 생성하기

값을 포함한 리스트를 생성하려면 대괄호 안에 값을 쉼표로 구분하여 넣으면 됩니다.

 

fruits = ['사과', '바나나', '포도']

 

리스트에 값 추가하기

리스트에 값을 추가하는 방법에는 여러 가지가 있습니다. 여기서는 세 가지 방법을 알아보겠습니다.

append() 사용하기

append() 함수를 사용하면 리스트의 끝에 값을 추가할 수 있습니다.

 

fruits = ['사과', '바나나', '포도']
fruits.append('딸기')
print(fruits)  # ['사과', '바나나', '포도', '딸기']

 

insert() 사용하기

insert() 함수를 사용하면 리스트의 특정 인덱스에 값을 추가할 수 있습니다.

 

fruits = ['사과', '바나나', '포도']
fruits.insert(1, '오렌지')
print(fruits)  # ['사과', '오렌지', '바나나', '포도']

 

extend() 사용하기

extend() 함수를 사용하면 한 리스트의 값을 다른 리스트에 추가할 수 있습니다.

 

fruits1 = ['사과', '바나나', '포도']
fruits2 = ['딸기', '블루베리', '체리']
fruits1.extend(fruits2)
print(fruits1)  # ['사과', '바나나', '포도', '딸기', '블루베리', '체리']

 

 

리스트에서 값 제거하기

리스트에서 값을 제거하는 방법에는 여러 가지가 있습니다. 여기서는 두 가지 방법을 알아보겠습니다.

 

remove() 사용하기

remove() 함수를 사용하면 리스트에서 특정 값을 제거할 수 있습니다. 만약 리스트에 같은 값이 여러 개 있을 경우, 가장 첫 번째 값만 제거됩니다.

 

fruits = ['사과', '바나나', '포도', '사과']
fruits.remove('사과')
print(fruits)  # ['바나나', '포도', '사과']

 

pop() 사용하기

pop() 함수를 사용하면 리스트에서 특정 인덱스의 값을 제거할 수 있습니다. 인덱스를 지정하지 않으면 리스트의 마지막 값이 제거됩니다.

 

pythonCopy code
fruits = ['사과', '바나나', '포도']
fruits.pop(1)
print(fruits)  # ['사과', '포도']

 

 

리스트 슬라이싱

리스트 슬라이싱은 리스트에서 특정 범위의 값을 추출하는 방법입니다. 시작 인덱스와 종료 인덱스를 지정하여 슬라이싱할 수 있습니다. 시작 인덱스는 포함되고, 종료 인덱스는 포함되지 않습니다.

 

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sliced_numbers = numbers[1:4]
print(sliced_numbers)  # [1, 2, 3]

 

리스트 정렬하기

리스트를 정렬하는 방법은 sort() 함수를 사용하거나, sorted() 함수를 사용하는 것입니다. sort() 함수는 원래의 리스트를 변경하고, sorted() 함수는 새로운 리스트를 반환합니다.

 

numbers = [3, 1, 4, 2]
numbers.sort()
print(numbers)  # [1, 2, 3, 4]

numbers = [3, 1, 4, 2]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # [1, 2, 3, 4]

 

 

리스트 반복문 사용하기

리스트에 있는 값들을 반복하여 처리할 때는 for 반복문을 사용합니다.

fruits = ['사과', '바나나', '포도']
for fruit in fruits:
    print(fruit)

 

 

리스트 조건문 사용하기

리스트에서 조건을 만족하는 값들만 추출하려면 if 조건문을 사용합니다.

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
even_numbers = []
for number in numbers:
    if number % 2 == 0:
        even_numbers.append(number)
print(even_numbers)  # [0, 2, 4, 6, 8]

 

 

리스트 함축(List Comprehension)

리스트 함축은 리스트를 생성하는 간결하고 효율적인 방법입니다. 리스트 함축을 사용하면 for 반복문과 if 조건문을 한 줄로 표현할 수 있습니다.

even_numbers = [number for number in range(10) if number % 2 == 0]
print(even_numbers)  # [0, 2, 4, 6, 8]

 

 

리스트 함수들

리스트에서 자주 사용되는 함수들을 알아보겠습니다.

  • len(): 리스트의 길이(값의 개수)를 반환합니다.
  • min(): 리스트에서 최소값을 반환합니다.
  • max(): 리스트에서 최대값을 반환합니다.
  • sum(): 리스트의 모든 값을 합한 결과를 반환합니다.

다차원 리스트

다차원 리스트는 리스트 안에 리스트를 포함하는 구조입니다. 이를 통해 행렬(matrix)이나 다차원 데이터를 처리할 수 있습니다.

 

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

 

 

리스트의  활용 예제들

여기서는 리스트를 활용한 몇 가지 예제를 살펴보겠습니다.

리스트를 이용한 숫자들의 평균 구하기

 

numbers = [1, 2, 3, 4, 5]
average = sum(numbers) / len(numbers)
print(average)  # 3.0

 

 

리스트를 이용한 단어 빈도수 세기

 

words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
word_count = {}
for word in words:
    if word not in word_count:
        word_count[word] = 1
    else:
        word_count[word] += 1
print(word_count)  # {'apple': 3, 'banana': 2, 'orange': 1}

 

 

리스트를 활용한 학생 성적 관리 프로그램

 

이제까지 배운 내용을 바탕으로 간단한 학생 성적 관리 프로그램을 만들어 보겠습니다.

학생들의 성적을 리스트로 저장하기

 

pythonCopy code
students = [
    {'이름': '김철수', '국어': 80, '영어': 90, '수학': 85},
    {'이름': '박영희', '국어': 90, '영어': 85, '수학': 90},
    {'이름': '이영수', '국어': 85, '영어': 80, '수학': 95}
]

 

각 학생의 총점과 평균 구하기

 

for student in students:
    total = student['국어'] + student['영어'] + student['수학']
    average = total / 3
    student['총점'] = total
    student['평균'] = average

print(students)

 

성적 순으로 학생 정렬하기

 

sorted_students = sorted(students, key=lambda x: x['총점'], reverse=True)
print(sorted_students)

 

성적표 출력하기

 

print('이름', '국어', '영어', '수학', '총점', '평균')
for student in sorted_students:
    print(student['이름'], student['국어'], student['영어'], student['수학'], student['총점'], student['평균'])

 

이 프로그램은 리스트를 사용하여 학생들의 성적을 저장하고, 총점과 평균을 계산한 후 성적 순으로 정렬하여 출력합니다. 리스트를 활용하면 이러한 작업을 간단하게 처리할 수 있습니다.

 

마무리

리스트는 파이썬에서 가장 기본적이고 중요한 자료구조입니다. 다양한 상황에서 리스트를 활용하여 데이터를 처리하고 문제를 해결할 수 있습니다. 이 글을 통해 파이썬 리스트에 대한 이해를 높이고 실전에서 활용할 수 있기를 바랍니다.

질문과 답변

  1. Q: 리스트와 튜플의 차이점은 무엇인가요? A: 리스트는 수정 가능한(mutable) 자료구조이고, 튜플은 수정 불가능한(immutable) 자료구조입니다. 즉, 리스트는 값을 추가, 삭제, 변경할 수 있지만 튜플은 생성 후 변경할 수 없습니다.
  2. Q: 파이썬에서 리스트를 사용하는 이유는 무엇인가요? A: 파이썬 리스트는 여러 개의 값을 저장하고 관리할 수 있는 유연하고 강력한 자료구조입니다. 리스트를 사용하면 코드가 간결하고 효율적이며, 다양한 알고리즘과 데이터 처리를 쉽게 구현할 수 있습니다.
  3. Q: 리스트 슬라이싱을 사용할 때 시작 인덱스와 종료 인덱스를 생략할 수 있나요? A: 네, 가능합니다. 시작 인덱스를 생략하면 0으로, 종료 인덱스를 생략하면 리스트의 길이로 간주합니다. 예를 들어, **numbers[:]**는 numbers 리스트의 모든 값을 포함하는 새로운 리스트를 반환합니다.
  4. Q: 리스트와 문자열 사이에는 어떤 관계가 있나요? A: 리스트와 문자열은 둘 다 시퀀스(sequence) 자료형입니다. 즉, 둘 다 순서가 있는 값들의 집합입니다. 리스트는 임의의 값을 저장할 수 있지만, 문자열은 문자들의 시퀀스입니다. 리스트와 문자열은 인덱싱, 슬라이싱 등의 연산이 공통적으로 적용됩니다.
  5. Q: 리스트 함축이란 무엇이며 왜 사용하는 것인가요? A: 리스트 함축은 리스트를 생성하는 간결하고 효율적인 방법입니다. 리스트 함축을 사용하면 for 반복문과 if 조건문을 한 줄로 표현할 수 있습니다. 이를 통해 코드가 짧아지고 가독성이 높아집니다.

 

댓글