일시 : 2018.01.04 10:30 AM ~ 12:00 PM
장소 : 멀티스퀘어 12F
내용 : chap 7 리스트
//
리스트
C에서 '배열' 개념.
배열은 같은 데이터 형식끼리만 묶을 수 있지만 리스트는 서로 다른 데이터 형식끼리도 묶을 수 있다.
변수를 여러개 선언해야 할 경우에 유용
예를 들면 a, b, c, d = 0, 0, 0, 0 을
aa = [0, 0, 0, 0] 으로 리스트 생성하여 사용
리스트 이름 =[값1, 값2, 값3, 값4]
index는 0부터 시작
빈 리스트를 만들고 append(값) 함수를 이용하여 항목 추가
aa = []
aa.append(0)
aa.append(0)
##출력결과 [0,0]
반복문을 사용하기 좋음
aa = []
for i in range(0, 100):
aa.append(0)
##100개 크기의 리스트를 만듦
len(aa)
len() 함수를 이용해서 리스트의 개수 확인
하나의 리스트 안에 정수와 문자열(서로 다른 데이터)를 포함할 수 있다.
aa = [10, 10, '파이썬']
index를 - (음수값)으로 사용하면 뒤에서부터 index ''-1''로 접근
aa = [10, 20, 30, 40] 일 때, aa[-1] = 40 이고 aa[-2] = 30
리스트이름[시작:끝+1] : 리스트의 모든 항목이 나옴
aa[0:4] => 0부터 3까지
콜론의 앞이나 뒤 숫자 생략 가능. aa[:2] -> index 0, 1 참조
리스트끼리 덧셈, 곱셈 연산 가능
aa = [10, 20, 30]
bb = [40, 50, 60]
aa + bb ##리스트 훼손되어 원래 리스트 사용x(?)
aa * 3
##결과값
[10, 20, 30, 40, 50, 60]
[10, 20, 30, 10, 20, 30, 10, 20, 30]
리스트의 값 변경은 한 개 값으로 변경하는 것 뿐만 아니라 여러 개의 값으로도 변경 가능
aa = [10, 20, 30]
aa[1] = 200 ##aa = [10, 200, 30] 으로 변경
aa = [10, 20, 30]
aa[1:2] = [200, 201] ##aa = [10, 200, 201, 30] 으로 변경, 범위 지정★★★
aa = [10, 20, 30]
aa[1] = [200, 201] ##aa = [10, [200, 201], 30] 으로 변경 -> 리스트 안에 리스트로 추가.많이 사용 x
항목을 삭제할 때는 del() 함수 이용.
del(aa[1])
여러 개의 항목을 삭제할 때는 'aa[시작:끝+1] = [ ]' 문장으로 설정
aa = [10, 20, 30, 40, 50]
aa[1:4] = []
##aa = [10, 50] 으로 변경
그 밖의 조작 함수
함수 | 설명 | 사용법 |
---|---|---|
append() | 리스트의 제일 뒤에 항목 추가 | list.append(0) |
pop() | 리스트 제일 뒤에 항목 빼고 삭제 | list.pop() |
sort() | 리스트 항목 정렬 | list.sort() |
reverse() | 리스트 항목 순서를 역순으로 | list.reverse() |
index() | 찾을 값을 찾아서 위치 반환 | list.index(20) |
insert() | 지정한 위치에 값 삽입 | list.insert(1, 100) |
remove() | 지정한 값을 제거.(여러 개일 경우 첫 번째 값만) | list.remove(100) |
count() | 리스트에서 찾을 값의 개수를 반환 | list.count(100) |
★ 스택과 큐
스택
LIFO (Last In First Out) 구조 - 나중에 들어간 것이 먼저 나옴
push(), pop()
top은 스택 안에 들어있는 데이터 중 마지막 데이터의 다음 위치를 가리킴(비어있는 위치)
큐
FIFO (First In First Out) 구조 - 먼저 들어간 것이 먼저 나옴
선형큐와 원형큐가 있음. (원형큐를 많이 씀)
자료의 삽입이 일어나는 곳 = rear
자료의 삭제가 일어나는 곳 = front
자료를 삽입하는 것 = enqueue
자료를 삭제하는 것 = dequeue
2차원 리스트
두 개의 첨자 사용 => 이중 for 문 사용
aa = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]]
리스트의 각 열의 크기가 다르게도 가능 (불규칙한 2차원 리스트)
실습
07-03
aa = []
for i in range(0, 4):
aa.append(0)
sum = 0
for i in range(0, 4):
aa[i] = int(input( str(i+1) + "번째 숫자 : "))
sum += aa[i]
print(" 합계 ==> %d" % sum)
07-04
=> 리스트 aa에 100개의 값을 추가하고 리스트 bb에 aa값의 역순을 추가시키는 코드
aa = []
bb = []
value = 0
for i in range(0, 100):
aa.append(value)
value += 2
for i in range(0, 100):
bb.append(aa[99-i])
print("bb[0]은 %d, bb[99]는 %d 입력" % (bb[0], bb[99]))
07-06
ord('A') : 문자 A의 아스키 코드 값을 출력 => 65
chr(65) : 숫자 65를 문자열로 변환 => A
주차장 프로그램 (스택 이용)
parking = []
top, carName, outCar = 0, "A", ""
select = 9
while (select != 3):
select = int(input("<1> 자동차 넣기 <2> 자동차 빼기 <3> 끝 : " ))
if select == 1:
if top >= 5 :
print("주차장이 꽉 차서 못 들어감")
else :
parking.append(carName)
print("%s 자동차가 들어감. 주차장 상태 ==> %s \n" % (parking[top], parking))
top += 1
carName = chr(ord(carName)+1)
elif select == 2 :
if top <= 0 :
print("빠져나갈 자동차가 없음\n")
else :
outCar = parking.pop()
print("%s 자동차가 나감. 주차장 상태 ==> %s \n" % (outCar, parking))
top -= 1
carName = chr(ord(carName)-1)
elif select == 3 :
break
else :
print("잘못 입력했네요. 다시 입력하세요.")
print("현재 주차장에 %d 대가 있음" % top)
print("프로그램을 종료합니다.")
주차장 프로그램 (큐 이용)
parking = []
top, carName, outCar = 0, "A", ""
select = 9
rear = 0
while (select != 3):
select = int(input("<1> 자동차 넣기 <2> 자동차 빼기 <3> 끝 : " ))
if select == 1:
if top >= 5 :
print("주차장이 꽉 차서 못 들어감")
else :
parking.append(carName)
print("%s 자동차가 들어감. 주차장 상태 ==> %s \n" % (parking[top], parking))
top += 1
carName = chr(ord(carName)+1)
elif select == 2 :
if top <= 0 :
print("빠져나갈 자동차가 없음\n")
else :
outCar = parking[rear]
del(parking[rear])
print("%s 자동차가 나감. 주차장 상태 ==> %s \n" % (outCar, parking))
top -= 1
elif select == 3 :
break
else :
print("잘못 입력했네요. 다시 입력하세요.")
print("현재 주차장에 %d 대가 있음" % top)
print("프로그램을 종료합니다.")
07-07
2차원 리스트 연습
list 그대로 출력하면 [ ] 중괄호까지 같이 출력
list1 = []
list2 = []
value = 0
for i in range(0, 4):
for j in range(0, 5) :
list1.append(value)
value += 3
print(list1)
list2.append(list1)
list1 = []
print("")
for i in range(0, 4):
for j in range(0, 5):
print("%3d" % list2[i][j], end='')
print("")
'2017 멀티캠퍼스 > Python' 카테고리의 다른 글
[Python] #9 파이썬 딕셔너리(Dictionary) (0) | 2018.01.09 |
---|---|
[Python] #8 파이썬 튜플(Tuple) (0) | 2018.01.09 |
[Python] #6 파이썬 반복문 while과 제어문 (0) | 2018.01.03 |
[Python] #5 파이썬 반복문 For (0) | 2018.01.03 |
[Python] #4 파이썬 조건문 if (0) | 2018.01.02 |