List
중학교 수학책 가장 처음에 나오는 집합을 기억하시죠?
특정 값들의 묶음을 리스트(List)라고 생각하시면 됩니다.
리스트는 내가 원하는 것들을 묶어두고 필요할 때 추가, 삭제, 읽기, 수정이 가능합니다.
만들기
Copy list = [1, 5, 3, 6]
stringList = ['Hi', 'Hello', 'Hey']
combineList = [1, 'Hello', 3, 'Hi']
inList = [1, 3, ['Hi', 'Hello']]
리스트는 대괄호([ ])를 사용하고 내부 요소들은 쉼표(,)를 이용해 구분하게 됩니다.
사용하기
읽기
전체 값 출력
Copy list = [1, 5, 3, 6]
print(list)
특정 위치의 값
Copy list = [1, 5, 3, 6]
print(list[1])
list의 1번째 값을 출력하도록 했습니다.
결과는 5가 출력됩니다. 왜 그런지 알아보죠.
리스트는 아래와 같은 구성으로 되어있습니다.
list[인덱스]를 사용하게 되면 list의 인덱스 위치의 값이 반환됩니다.
list[1]의 값을 출력했을 때 위치 1번이 아닌 인덱스 1 위치의 5값이 출력됩니다.
Copy list = [1, 5, 3, 6]
print(list[-1])
인덱스는 -(마이너스) 값을 사용할 수 있습니다.
위의 결과는 6이 출력됩니다.
여려 값 동시에 가져오기
Copy list = [1, 5, 3, 6]
print(list[2:4])
여러 값을 가져오기 위해서 [2:4]라고 적었습니다.
2시작 지점의 인덱스 (2 이상) : 4 끝점의 인덱스(4 미만)
2, 3 인덱스의 값을 가져오게 됩니다.
Copy list = [1, 5, 3, 6]
print(list[2:])
앞서 내용과 다른점은 2: 이후 어디까지 인지 위치 값이 없습니다.
2 이상 끝까지 값을 가져옵니다.
Copy list = [1, 5, 3, 6]
print(list[:2])
설명 안해도 느낌 오죠?
수정
Copy list = [1, 5, 3, 6]
list[0] = 10
print(list)
02 list의 0번째 값을 10으로 변경
리스트의 첫 번째 값이 10으로 변경된것을 확인할 수 있습니다.
리스트의 값을 어려개 가져올수 있는 것처럼 어려개를 동시에 변경할 수 있습니다.
Copy list = [1, 5, 3, 6]
list[0:2] = [10, 50]
print(list)
02 리스트의 0, 1번 째 값을 10, 50 으로 변경
[0:2]는 0 이상 2 미만의 위치라고 이야기 드렸죠.
그럼 우리는 0번과 1번의 값을 10, 50으로 변경하게 됩니다.
!!조심할점
Copy list = [1, 5, 3, 6]
list[0:2] = [10, 50, 40, 60]
print(list)
출력을 해보면 예상과 다르게 나올것 입니다.
0~1번 째까지는 값이 변경되고 이후 값은 추가가 됩니다.
어려개를 변경할 때는 인덱스와 추가하는 값을 잘 확인하셔야 합니다.!!
추가
추가는 List에 만들어져 있는 append, insert 함수를 이용합니다.
젤 뒤에 추가
Copy list = [1, 5, 3, 6]
list.append(8)
print(list)
원하는 위치에 추가
지금까지 1,5, 3, 6 의 리스트를 사용해왔습니다. 5, 3 사이에 4 값을 추가하겠습니다.
Copy list = [1, 5, 3, 6]
list.insert(2, 4)
print(list)
02 insert 함수는 insert(인덱스, 값) 으로 구성됩니다.
5와 3 사이는 인덱스 1, 2 입니다.
5와 3사이에 4값을 추가 하기위해서는 인덱스 2번에 4 값을 추가해야 겠죠.
삭제
위치 값 이용
원하는 위치의 값을 삭제합니다.
젤 처음 1의 값을 삭제하겠습니다.
Copy list = [1, 5, 3, 6]
del list[0]
print(list)
02 del list[0] del 명령어를 이용해 list의 0번째 값을 삭제 했습니다.
요소 값 이용
3번 값을 삭제하고 싶은데 리스트가 아주 길다면 눈으로 위치를 찾는거는 쉽지 않을 것 입니다.
이때 사용할 수 있습니다.
Copy list = [1, 5, 3, 6]
list.remove(3)
print(list)
02 list 내부 값 중에 3을 삭제
만약에 리스트에 3값이 어려개가 있는 경우 첫 번째 것만 삭제 됩니다.
Copy list = [1, 5, 3, 6, 3]
list.remove(3)
print(list)
알아두면 편한 함수
갯수 구하기
Copy list = [1, 5, 3, 6, 3]
print(len(list))
값의 위치 가져오기
Copy list = [1, 5, 3, 6, 3]
print(list.index(3))
정렬(Sort)
Copy list = [1, 5, 3, 6, 3]
list.sort()
print(list)
역순정렬
Copy list = [1, 5, 3, 6, 3]
list.sort(reverse=True)
print(list)
역순 (Reverse)
Copy list = [1, 5, 3, 6, 3]
list.reverse()
print(list)
값을 가져오며 삭제하기
Copy list = [1, 5, 3, 6, 3]
popValue = list.pop()
print(popValue)
print(list)
02 리스트 제일 뒤 값을 가져오며 리스트에서 삭제한다.
Copy list = [1, 5, 3, 6, 3]
popValue = list.pop(0)
print(popValue)
print(list)
02 리스트의 제일 처음 값을 가져오며 리스트에서 삭제한다.
리스트 합치기
Copy list = [1, 5, 3, 6, 3]
listExtends = ['hi', 'hello']
list.extend(listExtends)
print(list)
문
예제 1
다음과 같은 리스트가 있다.
Copy list = [1, 3, 5, 7, 9, 11]
리스트를 이용해서 값 1을 구하세요. 몇 가지 방법이 있을까요?
Copy list = [1, 3, 5, 7, 9, 11]
print(list[0])
print(list[3] - list[0] - list[0])
print(list[4] - list[1] + list[2])
예제2
다음과 같은 리스트가 있다.
Copy list1 = [1, 3, 5, 7, 9]
list2 = [2, 4, 6, 8]
1,2,3,4,5,6,7,8,9 를 출력하세요. 가능한 많은 방법을 찾아보세요.
Copy list1 = [1, 3, 5, 7, 9]
list2 = [2, 4, 6, 8]
list3 = list1 + list2
list3.sort()
print(list3)
list1.extend(list2)
list1.sort()
print(list1)
list3 = []
list3.append(list1[0])
list3.append(list2[0])
list3.append(list1[1])
list3.append(list2[1])
list3.append(list1[2])
list3.append(list2[2])
print(list3)
예제3
어느 식당에 갔다.
음식을 주문하려고 메뉴판을 보니
주문을 T1, P2을 했을 때 총 가격은 얼마인가요?
주문은 다양하게 변화 할 수 있습니다.
Copy #입력받는다.
user_order = input('주문 하세요.')
if(user_order == 'Menu') :
print("T1, 소고기 쌀국수 7,000원")
print("T2, 소고기 매운쌀국수 7,000원")
print("P1, 파인애플 볶음밥 7,000원")
print("P1, 해물볶음면 7,000원")
print("Q1, 월남쌈 7,000원")
user_order = input('주문 하세요.')
# "T1,P1,q1" 문자열
#입력받은 것을 자른다(,)
orders = user_order.lower().split(',')
#[t1, p1, q1]
#입력받은 주문이 몇개인지 확인한다.
count = len(orders);
#3
#입력받은 주문의 가격이 얼마인지 구한다.
price = [7000, 7500, 8000, 8500, 12000]
menu = ['t1', 't2', 'p1', 'p2', 'q1']
#주문의 가격을 모두 더한다.
if(count == 1) :
price_pos = menu.index(orders[0])
print(price[price_pos])
elif(count == 2):
price_pos = menu.index(orders[0])
price_pos1 = menu.index(orders[1])
print(price[price_pos] + price[price_pos1])
elif(count == 3):
price_pos = menu.index(orders[0])
price_pos1 = menu.index(orders[1])
price_pos2 = menu.index(orders[2])
print(price[price_pos] + price[price_pos1]+ price[price_pos2])
else:
print('1111')
예제 4
입력값 0이 아닌 경우 내용을 계속 입력받고, 0을 입력하면 이전 입력값을 하나식 보여주도록 하세요.
999입력 시 종료, 998 입력 시 남아있 값 출력
ex) 사용자 입력
>> 1
>> 123
>> 23
>> 4
>> 234
>>0
234
>>0
4
>>55555
>>0
55555
>>0
23
Copy # -*- coding: UTF-8 -*-
tong = []
while True:
userInput = input('숫자를 입력해주세요!!! (0: 이전 값 출력, 998:전체 출력, 999: 종료) : ')
if(not userInput.isnumeric()):
print('숫자만 입력해주세요!!')
continue
userInput = int(userInput)
if(userInput == 0):
if(not tong):
print('데이터가 없습니다.')
continue
popValue = tong.pop()
print(popValue)
elif(userInput == 998):
print(tong)
elif(userInput == 999):
print('종료합니다 !!')
break;
else:
tong.append(userInput)
print(tong[(len(tong)-1)])