List의 기본
리스트의 개념
- C/C++나 자바 같은 프로그래밍 언어에는 리스트가 없다. (리스트와 비슷한 개념인 배열을 사용한다.)
- 리스트는 정수, 문자열, 실수 등 서로 다른 데이터형도 하나로 묶을 수 있지만, 배열은 동일한 데이터형만 묶을 수 있다.
- 정수 배열은 정수로만 묶어서 사용한다.
- 개별적인 값을 하나의 변수에 담아서 처리
항목(item) 또는 요소(element)
- 리스트를 이루는 원소로 쉼표로 구분된 자료 값
리스트 생성
리스트명 = [값1, 값2, 값3, ~]
리스트의 일반적인 사용
aa = []
aa.append(0)
aa.append(0)
aa.append(0)
aa.append(0)
## [0, 0, 0, 0]
aa = []
for i in range(0, 100):
aa.append(0)
len(aa)
## 출력 결과 : 100
리스트는 다양한 데이터 형으로 섞을 수 있다.
aa = [10,20,'파이썬']
리스트 역순으로 대입하기
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. List
List : 대괄호[]내에 쉼표를 이용하여 값을 구분한다.
aa = [10, 20, 30, 40]
print("aa[-1]은 %d, arr[-2]은 %d"%(aa[-1],aa[-2]))
결과 : aa[-1]은 40, aa[-2]는 30
aa[2:] : [30, 400]
aa[:2] : [10, 20]
aa = [10, 20, 30]
bb = [40, 50, 60]
aa + bb
aa * 3
[10, 20, 30, 40, 50, 60]
[10, 20, 30, 10, 20, 30, 10, 20, 30]
aa = [10, 20, 30, 40, 50, 60, 70]
aa[::2]
aa[::-2]
aa[::-1]
[10, 30, 50, 70]
[70, 50, 30, 10]
[70, 60, 50, 40, 30, 20, 10]
리스트 값의 변경
aa = [10, 20, 30]
aa[1] = 200
aa
[10, 200, 30]
aa = [10, 20, 30]
aa[1:2] = [200,201]
aa
aa = [10, 20, 30]
aa[1] = [200,201]
aa
[10, 200, 201, 30]
[10, [200, 201], 30]
aa = [10, 20, 30]; aa = []; aa
aa = [10, 20, 30]; aa = None; aa
aa = [10, 20, 30]; del(aa); aa
[]
아무것도 안 나옴
오류발생
index()에서 찾고자 하는 데이터와 일치하는 요소가 없으면 오류를 일으킨다.
sort()에서 매개변수로 reverse = True를 입력하면 내림차순, 아무 것도 입력하지 않으면 오름차순으로 정렬
(reverse = True : 키워드 매개변수, 이름을 명시하여 사용하는 매개변수)
append vs extend
list1 = [11, 22, 33, 44]
list1.append([55,66])
결과 : [11,22,33,44,[55,66]]
list1.extend([55,66])
결과 : [11,22,33,44,55,66]
myList = [30, 10, 20]
print("현재 리스트 : %s"% myList)
myList.append(40)
print("append(40) 후의 리스트 : %s"% myList)
print("pop()으로 추출한 값 : %s"% myList.pop())
print("pop() 후의 리스트 : %s"% myList)
myList.sort()
print("sort() 후의 리스트 : %s"% myList)
myList.reverse()
print("reverse() 후의 리스트 : %s"% myList)
print("20값의 위치 : %d"% myList.index(20))
myList.insert(2,222)
print("insert(2,222) 후의 리스트 : %s"% myList)
myList.remove(222)
print("remove(222) 후의 리스트 : %s"% myList)
myList.extend([77,88,77])
print("extend([77,88,77]) 후의 리스트 : %s"% myList)
print("77값의 개수 : %d" % myList.count(77))
결과
현재 리스트 : [30, 10, 20]
append(40) 후의 리스트 : [30, 10, 20, 40]
pop()으로 추출한 값 : 40
pop() 후의 리스트 : [30, 10, 20]
sort() 후의 리스트 : [10, 20, 30]
reverse() 후의 리스트 : [30, 20, 10]
20값의 위치 : 1
insert(2,222) 후의 리스트 : [30, 20, 222, 10]
remove(222) 후의 리스트 : [30, 20, 10]
extend([77,88,77]) 후의 리스트 : [30, 20, 10, 77, 88, 77]
77값의 개수 : 2
삭제
1) del 키워드
n_list = [11,22,33,44,55]
print(n_list)
del n_list[3] # 네 번째 항목 삭제
print(n_list)
[11,22,33,55]
2) remove 키워드
n_list = [11,22,33,44,55]
print(n_list)
n_list.remove(44)
print(n_list)
- 존재하지 않는 항목을 remove()로 삭제하면 오류가 발생
멤버 연산자 in, not in
- 멤버 연산자는 참(True) 혹은 거짓(False)를 반환하는 연산자
- 특정한 원소가 문자열, 리스트, 튜플과 같은 자료구조의 내부에 포함되어 있는 가를 검사하는 용도로 사용된다.
- 존재하지 않는 항목 remove()로 삭제하려면 오류가 발생
리스트에 적용되는 내장함수
min(), max(), sum()
len() 리스트 내에서 항목의 개수
프로그램 1 완성
import turtle
import random
## 전역 변수 선언 부분
myTurtle, tX, tY, tColor, tSize, tShape = [None] * 6
shapeList = []
playerTurtles = []
swidth, sheight = 500, 500
## 메인 코드 부분
if __name__ == "__main__":
turtle.title('거북 리스트 활용')
turtle.setup( width=swidth + 50, height=sheight+50)
turtle.screensize(swidth,sheight)
shapeList = turtle.getshapes()
for i in range(0, 100):
tmpshape = random.choice(shapeList)
myTurtle = turtle.Turtle(tmpshape)
# random.shuffle(shapeList)
# myTurtle = turtle.Turtle(shapeList[0])
# 위 두줄, 주석 두줄로 변경가능
tX = random.randrange(-swidth/2,swidth/2)
tY = random.randrange(-sheight/2,sheight/2)
r = random.random(); g = random.random(); b = random.random()
tSize = random.randrange(1,3)
playerTurtles.append([myTurtle,tX,tY,tSize,r,g,b])
for tList in playerTurtles:
myTurtle = tList[0]
myTurtle.color((tList[4],tList[5],tList[6]))
myTurtle.pencolor((tList[4],tList[5],tList[6]))
myTurtle.turtlesize(tList[3])
myTurtle.goto(tList[1],tList[2])
turtle.done()
리스트의 기본
aa = [10,20,30,40,50,60,70]
aa[::-2] : 70, 50, 30, 10
리스트의 슬라이싱
슬라이싱 : 리스트내의 항목을 특정한 구간별로 선택하여 잘라내는 기능
- 구간을 명시하기 위해 리스트_이름[start, end] 문법 사용
- end-1까지 항목을 새 리스트에 삽입
a_list[:-2] + a_list[-2:]는 a_list[:]와 같다.
'컴퓨터공학 언어 > Python' 카테고리의 다른 글
함수 (0) | 2021.10.15 |
---|---|
문자열 (0) | 2021.10.15 |
Tuple, Dictionary, Set (0) | 2021.10.15 |
python 기초 (for문, 버그와 디버그 등) (0) | 2021.10.15 |
Python 기초 (0) | 2021.07.21 |
댓글