Backend/Python

Python 파이썬 튜플 : 인덱스, 슬라이싱, 요소, 메소드

쏠솔랄라 2023. 7. 3. 12:31

 

 

Python 파이썬 리스트 VS 튜플

 

Python 파이썬 리스트 VS 튜플

리스트 : 데이터의 목록 수정, 추가, 삭제 모두 가능 프로그램에서 많이 사용되는 데이터들을 관리하는 자료형 선언 : [ ] 를 통해 생성 배열 : 파이썬에서는 배열이 없다 Collection : 다량의 데이터

developernew.tistory.com

 

 

튜플

 

 

tp = (1,2,3,4,5)
tp = 1,2,3,4,5 # Packing

a,b,c,d,e = tp #UnPacking

 

 

print(a,b,c,d,e)

print(type(tp[0:3]))

for i in tp:
    print(i)

for i in range(tp.__len__()):
    print(tp[i])

 

 

출력화면

 

 

 

Tuple의 인덱싱과 슬라이싱

 

 

ex.

tp = (1,2,3,4,5)
 
print(tp[2])
print(tp[1:4])
print(tp[1:-2])

 

 

출력화면

print(tp[2])
# 앞에서 세 번째 요소를 출력
print(tp[1:4])
# 앞에서 두 번째부터 네 번째 요소까지를 슬라이싱해 출력
# 튜플의 슬라이싱은 시작 인덱스를 포함하고, 끝 인덱스는 포함하지 않는다
print(tp[1:-2])
# 앞에서 두 번째부터 뒤에서 두 번째 요소까지를 슬라이싱해 출력
# 음수 인덱스는 뒤에서부터 요소에 접근
# 따라서 두 번째부터 뒤에서 두 번째 요소는 (2, 3)이 된다

 

 

튜플 내의 요소는 리스트가 될 수 있다

 

 

ex.

tp = (1,1.234,"asdf",(1,2,3,4))

for i in range(len(tp)):
    if type(tp[i]) is int:
        print(tp[i])
    elif type(tp[i]) is float:
        print(tp[i])
    else :
        for j in range(len(tp[i])):
            print(tp[i][j],end=" ")
        print()

for i in tp:
    print(type(i))

tp = ((1,2),(1,2,3),(1,2,3,4))

print(tp[1][2])

for i in range(len(tp)):
    for j in range(len(tp[i])):
        print(tp[i][j],end=" ")
    print()

 

 

출력화면

 

 

튜플의 메소드

 


튜플 변환 함수

 

st = "asdfasdf"

#튜플 변환 함수
tp = tuple(st)

print(tp)
print(type(tp))

 

출력화면

 

 

count(), index()

: 튜플 메소드인 count()와 index()를 사용하여 튜플 tp의 값을 반환

 

tp = (1,2,3,4,5,4,5,6,7,8,9,4)

# count : 일치하는 값의 개수를 반환받는 메소드
# 있으면 개수만큼 반환, 없으면 0 반환

print(tp.count(4))
print(tp.count(0))
# count() 괄호 안의 숫자는 인덱스가 아닌 '값'이다


#index : 특정 값의 첫 번째 인덱스를 반환받는 메소드
# 값이 없으면 에러, 예외

print(tp.index(4)) # 값이 4인 요소의 첫 번째 인덱스 출력
print(tp.index(4,7)) # 값이 4인 요소를 인덱스 7부터 검색해 첫 번째 인덱스 출력

 

출력화면

 

 


 

 

Exercise1

 

 

menu = (('칼국수', 6000), ('비빔밥', 5500), ('돼지국밥', 7000), ('돈까스', 7000), ('김밥', 2000), ('라면', 2500))

위의 튜플 구조를 보고 아래에서 요구하는 값을 출력하는 코드를 작성하시오.

1. 김밥과, 라면의 가격을 각각 출력하시오.
2. 가격이 7000에 해당하는 메뉴를 출력 하시오.
3. 가격이 6000원 이하인 메뉴를 출력 하시오.
4. 사용자 입력으로 메뉴를 입력 받아 해당하는 메뉴의 가격을 출력하시오.
5. 사용자 입력으로 1개 이상의 메뉴를 입력 받아 해당 메뉴의 총 가격을 출력하시오.
(exit를 입력하면 더 이상의 입력을 받지 않는다.)

 

 

#1

print("{} : {}원".format(menu[4][0], menu[4][1]))
print("{} : {}원".format(menu[5][0], menu[5][1]))

 

출력화면

 

 

#2

for i in range(menu.__len__()):
    if menu[i][1]==7000:
        print("{} : {}원".format(menu[i][0], menu[i][1]))

 

출력화면

 

 

#3

print("가격이 6천 원 이하인 메뉴 : ")      
for i in range(menu.__len__()):
    if menu[i][1]<=6000:
        print("{} : {}원".format(menu[i][0], menu[i][1]))

 

출력화면

 

 

#4

check = True
user = input("메뉴 입력 : ")
for i in range(menu.__len__()):
    if menu[i][0]==user:
        print("{} : {}원".format(menu[i][0], menu[i][1]))
        check = False
        break
if check:
    print("잘못 입력하셨습니다.")

 

또는

check = True
me = input("메뉴 입력 : ")
for m in menu:
    if m[0] == me:
        print("{} : {}원".format(m[0],m[1]))
        check = False
        break

if check:
    print("잘못된 메뉴 입력!!")

 

출력화면

 

 

#5

tot = 0

while True:
    check = True
    me = input("메뉴 입력(종료 시 exit입력) : ")

    if me == "exit":
        print("총 금액 : {}원".format(tot))
        break

    for m in menu:
        if m[0] == me:
            print("{} : {}원".format(m[0],m[1]))
            tot += m[1]
            check = False
            break

    if check:
        print("잘못된 메뉴 입력!!")

 

출력화면