Sparta/Theory

[250821] 스파르타코딩 본캠프 13일차 (1) - Python 03 - list

junecho 2025. 8. 21. 16:43

🟡 Python 3차 강의 🟡

리스트                                                                  

🔰  리스트 메서드                                                                                                          

  요소 추가

  • append(item) : 리스트의 끝에 요소 추가
fruits = ['apple', 'banana']
fruits.append('cherry')
print(fruits)

>>>
['apple', 'banana', 'cherry']
  • insert(index, item) : 지정한 위치에 요소 추가
fruits.insert(1, 'blueberry')
print(fruits)

>>>
['apple', 'blueberry', 'banana', 'cherry']
  • extend(iterable) : 리스트를 확장하여 다른 이터러블의 모든 요소를 추가
fruits.extend(['date', 'fig'])
print(fruits)

>>>
['apple', 'blueberry', 'banana', 'cherry', 'date', 'fig']

 

 

  요소 제거

  • remove(item) : 첫 번째로 일치하는 요소를 제거
fruits.remove('banana')
print(fruits)

>>>
['apple', 'blueberry', 'cherry', 'date', 'fig']
  • pop(index) : 지정한 인덱스의 요소를 제거&반환. 인덱스를 지정하지 않으면 마지막 요소를 제거
# fruits의 2번 인덱스 제거
item = fruits.pop(2)
print(item)   
print(fruits)  

>>> 
cherry
['apple', 'blueberry', 'date', 'fig']
  • clear() : 모든 요소를 제거
fruits.clear()
print(fruits)

>>>
[]

 

 

▶  요소 검색 및 개수 세기

  • index(item) : 요소의 인덱스 반환
numbers = [1, 2, 3, 2, 4]
idx = numbers.index(2)
print(idx)

>>>
1 (첫 번째로 일치하는 인덱스)
  • count(item) : 요소의 개수 반환
# numbers 리스트에서 2라는 값의 개수
cnt = numbers.count(2)
print(cnt)

>>>
2

 

  정렬

  • sort() : 리스트를 오름차순으로 정렬
numbers = [5, 2, 9, 1, 5, 6]
numbers.sort()
print(numbers)
>>>
[1, 2, 5, 5, 6, 9]


# 역순 출력
numbers.sort(reverse=True)
print(numbers)
>>>
[9, 6, 5, 5, 2, 1]
  • reverse() : 리스트의 요소 순서를 거꾸로 출력
numbers.reverse()
print(numbers)

>>>
[9, 6, 5, 5, 2, 1]

 

 

🔰 리스트 활용                                                                                                                

  리스트 연산

연산자를 사용하여 리스트를 연결

list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = list1 + list2
print(result)

>>>
[1, 2, 3, 4, 5, 6]

 

 

  리스트 반복 (Repetition)

 

연산자를 사용하여 리스트를 반복

list1 = ['a', 'b']
print(list1 * 3)

>>>
['a', 'b', 'a', 'b', 'a', 'b']

 

 

 

  리스트 컴프리헨션 (List Comprehension)

간결하고 효율적인 방법으로 새로운 리스트를 생성하는 문법

new_list = [expression for item in iterable]

 

Ex) 1부터 10까지의 숫자 중에서 짝수만 제곱하여 리스트 생성

# 리스트 컴프리헨션 사용
squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(squares)
>>>
[4, 16, 36, 64, 100]

# 리스트 컴프리헨션 미사용
squares = []
for x in range(1, 11):
    if x % 2 == 0:
        squares.append(x**2)
print(squares)
>>>
[4, 16, 36, 64, 100]

 

Ex) 문자열 리스트에서 각 단어의 길이로 구성된 리스트 생성

words = ['apple', 'banana', 'cherry']
lengths = [len(word) for word in words]
print(lengths)  # 출력: [5, 6, 6]

 

 

  리스트의 반복문 활용

리스트의 각 요소에 접근하거나 처리하기 위해 반복문을 사용

 

Ex) for 루프

fruits = ['apple', 'banana', 'cherry']

for fruit in fruits:
    print(fruit)
    
*>>>
apple
banana
cherry*

 

Ex) 인덱스와 함께 반복하기

# enumerate : 인덱스와 값을 함께 불러올 수 있습니다.
for index, value in enumerate(fruits):
    print(f'인덱스 {index}: {value}')

 

 

 

 

 

✅ 튜플                                                                    

순서가 있는 불변(immutable)의 객체 집합

리스트와 매우 유사하지만, 한 번 생성되면 그 내부의 요소를 변경할 수 없음

 

  • 튜플 패킹

괄호를 생략하고 여러 값을 쉼표로 구분하면 튜플로 인식

my_tuple = 1, 2, 3
print(my_tuple)        
print(type(my_tuple))  

>>>
(1, 2, 3)
<class 'tuple'>
  • 튜플 언패킹

튜플의 요소를 여러 개의 변수에 할당

packed_tuple = 1, 2, 3
a, b, c = packed_tuple
print(a)  
print(b)  
print(c)  

>>>
1
2
3

 

  • 요소 변경, 추가, 삭제 불가 ! ! ! ⇒ 시도 시 에러 or 원본 유지

 

  • 가능한 메서드
    • count() : 특정 요소의 개수를 반환
    • index() : 튜플에서 첫 번째로 일치하는 요소의 인덱스를 반환

 

 

 


🔰 과제                                                                                                  

실습 01

더보기
더보기

1)

cities = ["Seoul", "Busan", "Incheon", "Gwangju", "Daejeon"]

sub_cities = list(cities[1:4])
print(sub_cities)

sub_cities.reverse()
reversed_cities = sub_cities
print(reversed_cities)

reversed_cities.append("Ulsan")
print(reversed_cities)

 

 2)

# 컴프리헨션 미사용
result = []

for i in range(1, 31):
    if i % 3 == 0 and i % 2 != 0:
        result.append(i)
print(result)

# 컴프리헨션 사용
result = [i for i in range(1,31) if i % 3 == 0 and i % 2 != 0]
print(result)

 

3)

userlist = list(map(int, input("정수를 입력하세요 (공백 구분) : ").split()))

print(f"최댓값 : {max(userlist)}")
print(f"최댓값 : {min(userlist)}")
print(f"최댓값 : {sum(userlist)/len(userlist)}")

 

실습 02

더보기
더보기

1)

a, b = map(int, input("정수 두 개 입력 : ").split())
a, b = b, a
print(f"교환 후 : a = {a}, b = {b}")

 

2)

fruits = ("사과", "배", "포도", "딸기", "바나나", "귤", "망고")

print("첫 3개 과일 :", fruits[0:3])
print("마지막 3개 과일 :", fruits[-3:])
print("짝수 인덱스 과일 : ", fruits[2::2])

 

 

 

미니 과제

더보기
더보기
#####################################################################################
### 미니과제 리스트 7문제 ###
# 01
'''
banana, date
4
error

# 02
2,3,4

# 03
fruits = ['apple', 'banana', 'cherry']
fruits.append("date")

print(fruits)

# 03-1
fruits = ['apple', 'banana', 'cherry', 'date']
fruits.insert(2, "watermelon")

print(fruits)

# 03-2
[['apple', 'banana', 'cherry', 'watermelon', 'date']],['melon', 'blueberry'] # => 틀림
# 답
[['apple', 'banana', 'cherry', 'watermelon', 'date'], 'melon', 'blueberry']

['apple', 'banana', 'cherry', 'watermelon', 'date', 'melon', 'blueberry']

# 03-3
fruits = ['apple', 'banana', 'cherry', 'watermelon', 'date']
fruits.remove("cherry")

print(fruits)

# 04
['e', 'd', 'c', 'b', 'a']

# 05
[1, 2, 3]
[4, 5]
[1, 2, 3, 4, 5, 4, 5]

# 06
5, 4, 3, 2

# 07
numbers = [1, 3, 3, 1, 7, 2, 9, 3, 5, 7]
ind = numbers.index(7)

print(ind)

# 07-1
numbers = [1, 3, 3, 1, 7, 2, 9, 3, 5, 7]
cnt = numbers.count(3)

print(cnt)


### 실습 리스트 5문제 ###
# 01
[1, 2, 3, 4, 5] # 틀림
# 답
[1, 9, 9, 9, 5]

# 02
mystr = "hello"
mylist = []

for i in mystr:
    mylist.append(i)
print(mylist)

# 03
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
numbers.sort()

print(numbers)

# 03-1
numbers.reverse()
print(numbers)

# 04

# 05
[1, 2, 3]   #틀림
# 답
[1, 2, 3, 4]


### 심화 4문제 ###
### 리스트 컴프리헨션, 반복문, 조건문 사용 ###
####### 01 #######
numbers = [1, 2, 3, 4, 5]

# 미사용
mylist = []
for i in numbers:
    mylist.append(i**2)
print(mylist)

# 사용
mylist = [i**2 for i in numbers]
print(mylist)


####### 02 #######
numbers = [1, 2, 3, 4, 5, 6]

# 미사용
mylist = []

for i in numbers:
    if i % 2 == 0:
        mylist.append(i)
print(mylist)

# 사용
mylist = [i for i in numbers if i % 2 == 0]
print(mylist)


####### 03 #######
matrix = [[1, 2], [3, 4], [5, 6]]

# 미사용
numsum = 0

for i in matrix:
    for j in i:
        numsum += j
print(numsum)

# 사용 검색해서 했음
# 컴프리헨션에 += 같은 대입 연산은 직접 못씀
myy = sum(i for j in matrix for i in j)
print(myy)


####### 04 #######
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]

# 미사용
mylist = []

for i in numbers:
    if numbers.count(i) == 1:
        mylist.append(i)

mylist.sort()
print(mylist)

# 사용
mylist = [i for i in numbers if numbers.count(i) == 1]
mylist.sort()
print(mylist)
'''


#####################################################################################
### 미니과제 튜플 7문제 ###
'''
####### 01 #######
3
5
error


####### 02 #######
my_tuple = (1, 2, 3, 4, 5)

my_tuple.index(4)


####### 03 #######
my_tuple = (1, 3, 3, 3, 5, 3)

my_tuple.count(3)


####### 04 #######
(5, 4, 3, 2, 1)


####### 05 #######
my_tuple = (10, 20, 30, 40, 50)

print(my_tuple[1:-1])


####### 06 #######
('hello')   # 틀림
# 답
('h', 'e', 'l', 'l', 'o')

####### 06-1 #######
myt = 1,2,3
print(myt)

mylist = []

for i in myt:
    mylist.append(i)
print(mylist)


####### 07 #######
my_tuple = (1,2,3)
my_tuple = (1,2,3,4)
print(my_tuple)


####### 08 #######
(1, 2, 1, 2, 3, 4)


####### 09 #######
? 모르겠음

####### 10 #######
(3, 4)
(1, 2)
1 2 3
<class 'tuple'>

####### 11 #######
numbers = (5, 2, 8, 1, 3)
print(max(numbers))
print(min(numbers))
'''