python 8장. 자료구조 I (리스트, 튜플)

Hyuna·2024년 7월 27일

Python 기본

목록 보기
8/17
post-thumbnail

파이썬에서의 배열을 배워보자





1. 리스트(List)

  • 순서가 있는 요소들의 모음
  • 변경 가능한 자료구조
  • "[ ]"로 표현

📌 리스트 생성

변수_이름 = []
변수_이름 = list()

📌 리스트 요소 추가 append()

a= []           
a.append(4)     >>> [4]
a.append('5')   >>> [4, '5']
a.append([2,3]) >>> [4, '5', [2,3]]

📌 인덱싱

  • 특정 요소에 접근해 값을 읽거나 변경
l = [1, 2, 3, "abc"] 
print(l[0], l[1], l[2], l[3]) # 순서대로 출력
print(l[-1], l[-2], l[-3], l[-4]) # 역순 출력

📌 슬라이싱

  • 여러 요소에 접근
  • 스텝만큼 건너뛰면서 리스트 참조 가능
lst1 = [1, 2, 3, "abc", 4, 5]
lst1[2:4] >>> [3, "abc"]
lst1[:3]  >>> [1, 2, 3]
lst1[2:]  >>> [3, "abc", 4, 5]
lst1[:]  >>> [1, 2, 3, "abc", 4, 5]

# [::2]: 시작부터 끝덱스까지 2씩 스텝 건너뛰기 

lst1 = [1, 2, 3, "abc", 4, 5]
lst1[2:5:2] >>> [3, 4]
lst1[2:6:2] >>> [3, 4]
lst1[:3:2] >>> [1, 3]
lst1[2::2] >>> [3, 4]

📌 연결하기/반복하기

#연결하기
a = [1, 2, 3]
b = ["abc", 4, 5]
c = a + b 
print(c)  >>> [1, 2, 3, "abc", 4, 5]

#반복하기
a = [1, 2]
b = a * 4
print(b) >>> [1, 2, 1, 2, 1, 2, 1, 2]

📌 리스트 요소 수정

* 리스트이름[인데스] = 새로운 값
* 리스트이름[시작인덱스:끝인덱스] = 새로운 값
# 리스트이름[인데스] = 새로운 값

a = [1, 2, 3, "abc"]
a[2] = 4 >>> [1, 2, 4, "abc"]
a[3] = ["ab", 'a', "def"]  >>> [1,2,4,["ab",'a',"def"]]

# 리스트이름[시작인덱스:끝인덱스] = 새로운 값
a = [1, 2, 3, "abc"]
a[1:2] = ['g', 'h'] >>> [1, 'g', 'h', 3, "abc"]
a[2:4] = ["ab", 'a', "def"]
>>> [1, 'g', "ab", 'a', "def", "abc"]

📌 리스트 요소 삭제/제거

* del로 리스트 요소 삭제
# del로 리스트 요소 삭제
a = [1, 2, 3, "abc", 'g', 'h']
del a[1] >>>  a= [1, 3, "abc", 'g', 'h']


# 범위 삭제
a = [1, 2, 3, "abc", 'g', 'h']
a[1:2] = [] >>> [1, 3, "abc", 'g', 'h']
a[2:4] = [] >>> [1, 3, 'h']
del(a[0:2]) >>> ['h']
* remve(x)로 요소 제거
# remve(x): 첫번째로 나오는 x 제거
a = [1, 3, 5, 7, 9, 7, 5, 3, 1]
a.remove(5) >>> [1, 3, 7, 9, 7, 5, 3, 1]
a.remove(3) >>> [1, 7, 9, 7, 5, 3, 1]
a.remove(3) >>> [1, 7, 9, 7, 5, 1]

📌 리스트 요소 삽입

* insert(x,y): x위치에 y요소 삽입
# x위치 바로 앞에 삽입

a = [4, 8, 7, 2, 1]
a.insert(2, 5) >>> [4, 8, 5, 7, 2, 1]
a.insert(1, [1, 6])
>>> [4, [1, 6], 8, 5, 7, 2, 1]

📌 리스트 요소 정렬(sort)

a = [4, 8, 7, 2, 1]
a.sort() >>>  [1, 2, 4, 7, 8] #오름차순 정렬
a.append('a') >>>  [1, 2, 4, 7, 8, 'a']
a.sort() # Error 발생: 문자열과 정수를 비교함

📌 리스트 요소 뒤집기(reverse)

a = [4, 8, 7, 2, 1]
a.reverse() >>> [1, 2, 7, 8, 4]


💡 세 개의 숫자를 입력받아 리스트에 저장 후, 모든 요소 합을 계산해보자

>> 함수에서 정수를 입력받고 리스트 구성 후 합계 출력
def sum_List():
    numbers = []
    numbers.append(int(input("첫번째 숫자를 입력하세요: ")))
    numbers.append(int(input("두번째 숫자를 입력하세요: ")))
    numbers.append(int(input("세번째 숫자를 입력하세요: ")))
    
    total = sum(numbers)
    print(f"총 합계는: {total}")
        

sum_List()


💡 세 개의 숫자를 입력받아 리스트에 저장 후, 최대값/최소값을 찾아 출력해보자

>> max(), min() 활용
def find_list():
    numbers = []
    numbers.append(int(input("첫번째 숫자를 입력하세요: ")))
    numbers.append(int(input("두번째 숫자를 입력하세요: ")))
    numbers.append(int(input("세번째 숫자를 입력하세요: ")))
    
    max_number = max(numbers)
    min_number = min(numbers)
    
    print(f"최대값은 {max_number}, 최소값은 {min_number}")
                       

find_list()



2. 튜플(Tuple)

  • 순서가 있는 요소들의 모음
  • 변경 할 수 없는 자료구조
  • 튜플 내 리스트 요소는 변경가능
  • "()"로 표현
  • 요소가 한 개일 때 반드사 콤마(,)로 끝나야 한다
    tuple1 = (2,)
t = (1, 2, [1, 2])

list1 = t[2] >> list1 = (1, 2)
list1[0] = 3 >> list = (1, 2, [3,2])
t[2][0] = 4 # 두번째 리스트 요소 0번쨰를 4로 교체
>> list = (1 ,2, [4,2])

📌 인덱싱

  • 특정 요소에 접근해 값을 읽거나 변경
a = (1, 2, 3, "abc") 
print(a[0], a[1], a[2], a[3]) # 순서대로 출력
print(a[-1], a[-2], a[-3], a[-4]) #역순 출력

📌 슬라이싱

  • 여러 요소에 접근
  • 스텝만큼 건너뛰면서 리스트 참조 가능
a = (1, 2, 3, "abc", 4, 5)

a[2:6:2] >>> (3, 4)
a[2::2] >>> (3, 4)

📌 연결하기/반복하기

#연결하기
t1 = (1, 2, 3)
t2 = ("abc", 4, 5)
t = t1 + t2 
print(t) >>> (1, 2, 3, "abc", 4, 5)

#반복하기
a = (1, 2)
b = a * 4
print(b) >>.(1, 2, 1, 2, 1, 2, 1, 2)

📌 리스트/튜플 상호 변환

  • 리스트 >> 튜플
    list1 =[1,2]
    tuple1 = tuple(list1)

  • 튜플 >> 리스트
    tuple2 = (1,2)
    list2 = list(tuple2)




💡 이름, 나이를 함수 인자를 전달하고, 전달받은 값을 변수에 담아 튜플로 리턴해보자

>> 출력은 리턴 받은 튜플 데이터로 출력
>> name, age로 입력받기

def generate_tuple():
    name = input("이름을 입력하세요: ")
    age = int(input("나이를 입력하세요: "))
    gen_tuple = (name,age)
    print(gen_tuple)

generate_tuple()



💡 세 개의 숫자를 입력받아 튜플에 저장 후, 저장된 튜플을 출력하고 튜플의 첫번째 요소와 마지막 요소를 출력해보자

def generate_tuple():
    n1 = int(input("첫번째 요소를 입력하세요: "))
    n2 = int(input("첫번째 요소를 입력하세요: "))
    n3 = int(input("첫번째 요소를 입력하세요: "))
    
    gen_tuple = (n1, n2, n3)
    print(f"튜플 첫번째 요소: {gen_tuple[0]}, 튜플 마지막 요소: {gen_tuple[2]}")
    
    
generate_tuple()

0개의 댓글