본문 바로가기
컴퓨터공학 언어/Python

List

by KChang 2021. 10. 15.

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

댓글