리스트 (list) 는여러개의데이터가저장되어있는장소이다. scores = [ 32, 56, 64, 72, 12, 37, 98, 77, 59, 69]
scores = [ ] for i in range(10): scores.append(int(input(" 성적을입력하시오 :"))) print(scores)
scores = [ 32, 56, 64, 72, 12, 37, 98, 77, 59, 69] scores[0] = 80; scores[1] = scores[0]; scores[i] = 10; // i는정수변수 scores[i+2] = 20; // 수식이인덱스가된다. if i >= 0 and i < len(scores) : scores[i] = number
scores = [ 32, 56, 64, 72, 12, 37, 98, 77, 59, 69] for element in scores: print(element)
list1 = list() list2 = list("hello") list3 = list(range(0, 5)) # 공백리스트생성 # 문자 H, e, l, l, o를요소로가지는리스트생성 # 0, 1, 2, 3, 4를요소가가지는리스트생성 list1 = [ ] list2 = [ "H", "e", "l", "l", "o" ] list3 = [ 0, 1, 2, 3, 4 ] # 공백리스트생성 # 문자 H, e, l, l, o를요소로가지는리스트 # 0, 1, 2, 3, 4를요소가가지는리스트생성
list1 = [12, "dog", 180.14] list2 = [["Seoul", 10], ["Paris", 12], ["London", 50]] list3 = ["aaa", ["bbb", ["ccc", ["ddd", "eee", 45]]]] # 혼합자료형 # 내장리스트 # 내장리스트
학생들의성적을처리하는프로그램을완성시켜보자. 사용자로부터성적을입력받아서리스트에저장한다. 성적의평균을구하고 80 점이상성적을받은학생의숫자를계산하여출력해보자. 성적을입력하시요 : 10 성적을입력하시요 : 20 성적을입력하시요 : 60 성적을입력하시요 : 70 성적을입력하시요 : 80 성적평균은 48.0 입니다. 80 점이상성적을받은학생은 1 명입니다.
STUDENTS = 5 scores = [] scoresum = 0 for i in range(students): value = int(input(" 성적을입력하시요 : ")) scores.append(value) scoresum += value scoreavg = scoresum / len(scores) highscorestudents = 0 for i in range(len(scores)): if scores[i] >= 80: highscorestudents += 1 print(" 성적평균은 ", scoreavg, " 입니다.") print("80 점이상성적을받은학생은 ", highscorestudents, " 명입니다.")
리스트는문자열도저장할수있다. 강아지를많이키우는사람을가정하자. 강아지들의이름을저장하였다가출력하는프로그램을작성해보자. 강아지의이름을입력히시오 ( 종료시에는엔터키 ) 미나강아지의이름을입력히시오 ( 종료시에는엔터키 ) 초롱이강아지의이름을입력히시오 ( 종료시에는엔터키 ) 써니강아지의이름을입력히시오 ( 종료시에는엔터키 ) 팅커벨강아지의이름을입력히시오 ( 종료시에는엔터키 ) 강아지들의이름 : 미나, 초롱이, 써니, 팅커벨,
dognames = [] while True: name = input(' 강아지의이름을입력히시오 ( 종료시에는엔터키 ) ') if name == '': break dognames.append(name) print(' 강아지들의이름 :') for name in dognames: print(name, end=", ")
시퀀스 : 순서를가진요소들의집합 문자열 바이트시퀀스 바이트배열 리스트 튜플 range 객체
text = "Will is power." print(text[0], text[3], text[-1]) flist = ["apple", "banana", "tomato", "peach", "pear" ] print(flist[0], flist[3], flist[-1]) W l. apple peach pear
인덱싱 (indexing) 이란리스트에서하나의요소를인덱스연산자를통하여참조 ( 접근 ) 하는것을의미한다. >>> shopping_list = [ " 두부 ", " 양배추 ", " 딸기 ", " 사과 ", " 토마토 " ] >>> shopping_list[0] ' 두부 '
슬라이싱 (slicing) 은리스트안에서범위를지정하여서원하는요소들을선택하는연산이다. >>> squares = [0, 1, 4, 9, 16, 25, 36, 49] >>> squares[3:6] # 슬라이싱은새로운리스트를반환한다. [9, 16, 25]
>>> squares = [0, 1, 4, 9, 16, 25, 36, 48] # 잘못된부분이있음! >>> 7 ** 2 # 7 의제곱은 49 임! 49 >>> squares[7] = 49 # 잘못된값을변경한다. >>> squares [0, 1, 4, 9, 16, 25, 36, 49]
두개의리스트를합칠때는연결연산자인 + 연산자를사용할수있다. >>> marvel_heroes = [ " 스파이더맨 ", " 헐크 ", " 아이언맨 " ] >>> dc_heroes = [ " 슈퍼맨 ", " 배트맨 ", " 원더우먼 " ] >>> heroes = marvel_heroes + dc_heroes >>> heroes [' 스파이더맨 ', ' 헐크 ', ' 아이언맨 ', ' 슈퍼맨 ', ' 배트맨 ', ' 원더우먼 '] >>> values = [ 1, 2, 3 ] * 3 >>> values [1, 2, 3, 1, 2, 3, 1, 2, 3]
len() 연산은리스트의길이를계산하여반환한다. >>> letters = ['a', 'b', 'c', 'd'] >>> len(letters) 4
append() 를사용하여서리스트의끝에새로운항목을추가할수있다. >>> shopping_list = [ ] >>> shopping_list.append(" 두부 ") >>> shopping_list.append(" 양배추 ") >>> shopping_list.append(" 딸기 ") >>> shopping_list [' 두부 ', ' 양배추 ', ' 딸기 ']
어떤요소가리스트에있는지없는지만알려면 in 연산자를사용하면된다. heroes = [ " 스파이더맨 ", " 슈퍼맨 ", " 헐크 ", " 아이언맨 ", " 배트맨 " ] if " 배트맨 " in heroes : print(" 배트맨은영웅입니다. ")
어떤요소의리스트안에서의위치를알려면 index() 을사용한다. heroes = [ " 스파이더맨 ", " 슈퍼맨 ", " 헐크 ", " 아이언맨 ", " 배트맨 " ] index = heroes.index(" 슈퍼맨 ") # index 는 1 이된다.
pop() 메소드는특정한위치에있는항목을삭제한다. >>> heroes = [ " 스파이더맨 ", " 슈퍼맨 ", " 헐크 ", " 아이언맨 ", " 배트맨 " ] >>> heroes.pop(1) ' 슈퍼맨 ' >>> heroes [' 스파이더맨 ', ' 헐크 ', ' 아이언맨 ', ' 배트맨 '] >>> heroes = [ " 스파이더맨 ", " 슈퍼맨 ", " 헐크 ", " 아이언맨 ", " 배트맨 ", " 조커 " ] >>> heroes.remove(" 조커 ") >>> heroes [' 스파이더맨 ', ' 슈퍼맨 ', ' 헐크 ', ' 아이언맨 ', ' 배트맨 ']
우리는비교연산자 ==,!=, >, < 를사용하여서 2 개의리스트를비교할수있다. >>> list1 = [ 1, 2, 3 ] >>> list2 = [ 1, 2, 3 ] >>> list1 == list2 True
리스트안에서최소값과최대값을찾으려면내장메소드인 max() 와 min() 을사용하면된다. >>> values = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] >>> min(values) 1 >>> max(values) 10
1. 리스트객체의 sort() 메소드를사용하는방법 2. sorted() 내장함수를사용하는방법 >>> a = [ 3, 2, 1, 5, 4 ] >>> a.sort() >>> a [1, 2, 3, 4, 5] >>> a = [ 3, 2, 1, 5, 4 ] >>> b = sorted(a) >>> b [1, 2, 3, 4, 5]
scores = [ 10, 20, 30, 40, 50 ] values = scores
>>> scores = [ 10, 20, 30, 40, 50 ] >>> values = list(scores) >>> values[2]=99 >>> scores [10, 20, 30, 40, 50] >>> values [10, 20, 99, 40, 50]
리스트는 참조로호출하기 가적용된다. def func2(list): list[0] = 99 values = [0, 1, 1, 2, 3, 5, 8] print(values) func2(values) print(values) [0, 1, 1, 2, 3, 5, 8] [99, 1, 1, 2, 3, 5, 8]
리스트를수학자들이집합을정의하는것과유사하게생성하는것
list1 = [3, 4, 5] list2 = [x*2 for x in list1] print(list2) [6, 8, 10]
[0, 2, 4, 6, 8]
타고라스의정리를만족하는삼각형들을모두찾아보자. 삼각형한변의길이는 1 부터 30 이하이다. [(3, 4, 5), (5, 12, 13), (6, 8, 10), (7, 24, 25), (8, 15, 17), (9, 12, 15), (10, 24, 26), (12, 16, 20), (15, 20, 25), (20, 21, 29)]
new_list = [(x,y,z) for x in range(1,30) for y in range(x,30) for z in range(y,30) if x**2 + y**2 == z**2] print(new_list) new_list = [] for x in range(1, 30): for y in range(x, 30): for z in range(y, 30): if x**2+y**2==z**2: new_list.append((x, y, z)) print(new_list)
파이썬을이용하여연락처를관리하는프로그램을작성하여보자. 연락처관리프로그램은다음과같은메뉴를가져야한다. -------------------- 1. 친구리스트출력 2. 친구추가 3. 친구삭제 4. 이름변경 9. 종료메뉴를선택하시오 : 2 이름을입력하시오 : 홍길동 -------------------- 1. 친구리스트출력 2. 친구추가 3. 친구삭제 4. 이름변경 9. 종료메뉴를선택하시오 : 1 [' 홍길동 '] --------------------...
menu = 0 friends = [] while menu!= 9: print("--------------------") print("1. 친구리스트출력 ") print("2. 친구추가 ") print("3. 친구삭제 ") print("4. 이름변경 ") print("9. 종료 ") menu = int(input(" 메뉴를선택하시오 : ")) if menu == 1: print(friends) elif menu== 2: name = input(" 이름을입력하시오 : ") friends.append(name)
elif menu == 3: del_name = input(" 삭제하고싶은이름을입력하시오 : ") if del_name in friends: friends.remove(del_name) else: print(" 이름이발견되지않았음 ") elif menu == 4: old_name = input(" 변경하고싶은이름을입력하시오 : ") if old_name in friends: index = friend.index(old_name) new_name = input(" 새로운이름을입력하시오 : ") friends[index] = new_name else: print(" 이름이발견되지않았음 ")
2 차원테이블표시 # 2 차원리스트를생성한다. s = [ [ 1, 2, 3, 4, 5 ], [ 6, 7, 8, 9, 10 ], [11, 12, 13, 14, 15 ] ] print(s) [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
# 동적으로 2 차원리스트를생성한다. rows = 3 cols = 5 s = [ ] for row in range(rows): s += [[0]*cols] print("s =", s) s = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
s = [ ] [ 1, 2, 3, 4, 5 ], [ 6, 7, 8, 9, 10 ], [11, 12, 13, 14, 15 ] # 행과열의개수를구한다. rows = len(a) cols = len(a[0]) for r in range(rows): for c in range(cols): print(s[r][c], end=",") print() 1,2,3,4,5, 6,7,8,9,10, 11,12,13,14,15,
2 개의주사위를굴리면다음표와같이 36 가지의결과가나온다. 이것을 6 6 크기의 2 차원리스트로생성하여보자. [[2, 3, 4, 5, 6, 7], [3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8, 9], [5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10, 11], [7, 8, 9, 10, 11, 12]]
rows = 6 cols = 6 table = [ ] # 2 차원리스트를생성한다. for row in range(rows): table += [[0]*cols] # 2 차원리스트의각요소에 rows 와 cols 값을더하여저장한다. for row in range(rows): for col in range(cols): table[row][col] = (row+1+col+1) print(table)
다음과같이텍스트모드에서컴퓨터와사람이 Tic- Tac-Toe 게임을할수있는프로그램을작성하여보자. --- --- --- --- --- --- 다음수의 x 좌표를입력하시오 : 0 다음수의 y 좌표를입력하시오 : 0 X O --- --- --- --- --- --- 다음수의 x 좌표를입력하시오 : 1 다음수의 y 좌표를입력하시오 : 1 X O O --- --- --- X --- --- ---...
board= [[' ' for x in range (3)] for y in range(3)] while True: # 게임보드를그린다. for r in range(3): print(" " + board[r][0] + " " + board[r][1] + " " + board[r][2]) if (r!= 2): print("--- --- ---") # 사용자로부터좌표를입력받는다. x = int(input(" 다음수의 x 좌표를입력하시오 : ")) y = int(input(" 다음수의 y 좌표를입력하시오 : "))
# 사용자가입력한좌표를검사한다. if board[x][y]!= ' ': print(" 잘못된위치입니다. ") continue else: board[x][y] = 'X' # 컴퓨터가놓을위치를결정한다. 첫번째로발견하는비어있는칸에놓는다. done =False for i in range(3): for j in range(3): if board[i][j] == ' ' and not done: board[i][j] = 'O'; done=true break;
리스트는많은데이터를저장할수있는자료구조이다. 리스트에요소를추가할때는 append() 를사용한다. 리스트의길이는 len() 로계산할수있고리스트의요소들을정렬하려면 sort() 를호출한다. 리스트도 2 차원으로만들수있가. 2 차원리스트는 1 차원리스트의모임으로구성된다.