10.8 함수에서 리스트 반환하기(Returning a List from a Function)
- 함수가 리스트를 반환 할 때, 반환하는 리스트의 주소값(reference value)이 반환된다.
- 함수를 호출 할 때, 리스트 인자를 넘겨 줄 수 있다.
- 그리고 함수는 리스트 반환도 가능하다.
- 예를 들어, 아래의 함수는 넘겨받은 리스트의 요소들을 역순으로 배열한 리스트를 반환하는 함수이다.
*revers(lst)
def revers(lst): result = [] for element in lst: result.insert(0, element) return result | cs |
- Line 2에서 result라는 새로운 리스트를 생성한다.
- Line 4-5 에서, lst라는 리스트의 요소들을 복사하여 result 리스트에 넣는다.
- Line 7에서 result 리스트를 반환한다.
- 위 함수를 아래와 같이 사용하면 list2 = [6,5,4,3,2,1] 리스트가 생성된다.
list1 = [1, 2, 3, 4, 5, 6]
list2 = reverse(list1)
- 하지만 list 클래스에 reverse() 메소드가 있다는 걸 잊지말자.
10.9 사례 연구: 문자 빈도수 세기(Case Study: Counting the Occurrences of Each Letter)
- 100개의 문자들 각각의 나타나는 빈도 수를 카운트하는 프로그램이다.
1. 100개의 소문자를 랜덤으로 만들어 chars라는 리스트에 할당한다.
* 랜덤 문자들은 6.11 RandomCharacter 모듈의 getRandomLowerCaseLetter() 함수를 이용해 얻을 예정이다.
2. 각 문자를 카운트하기 위해 counts라는 이름의 26개의 int 값을 가지는 리스트를 선언한다.
* 리스트의 각 자리는 문자가 나타나는 수를 할당하는 곳이다. ex) counts[0]은 a의 빈도수이고 counts[1]은 b의 빈도수이다.
*RandomCharacter.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | from random import randint # randint를 임포트한다. # ch2과 ch2 사이의 랜덤 문자를 생성한다. def getRandomCharacter(ch2, ch2): return chr(randint(ord(ch2), ord(ch2))) # 랜덤 소문자를 생성한다. def getRandomLowerCaseLetter(): return getRandomCharacter('a', 'z') # 랜덤 대문자를 생성한다. def getRandomUpperCaseLetter(): return getRandomCharacter('A', 'Z') # 랜덤 숫자를 생성한다. def getRandomDigitCharacter(): return getRandomCharacter('0', '9') # 랜덤 문자를 생성한다. def getRandomASCIICharacter(): return getRandomCharacter(chr(0), chr(127)) | cs |
*CountLettersInList.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | import RandomCharacter def main(): #문자들이 있는 리스트 생성 chars = createList() #리스트 출력 print("The lowercase letters are: ") displayList(chars) #각 문자의 빈도수 세기 counts = countLetters(chars) #counts 리스트 출력 print("The occurences of each letter are : ") displayCounts(counts) #문자 캐릭터 생성 def createList(): #빈 리스트 생성 chars = [] #소문자를 랜덤으로 생성하여 리스트에 할당 for i in range(100): chars.append(RandomCharacter.getRandomLowerCaseLetter()) # 리스트 반환 return chars #문자 리스트 출력 def displayList(chars): #20개씩 문자를 나눠서 출력 for i in range(len(chars)): if (i+1)%20 == 0: print(chars[i]) else : print(chars[i], end = ' ') #각 문자 빈도수 세기 def countLetters(chars): # 26개의 정수를 0으로 초기화한 리스트 생성 counts = 26*[0] #문자 수 세기 for i in range(len(chars)): counts[ord(chars[i]) - ord('a')] += 1 return counts #counts 출력 def displayCounts(counts): for i in range(len(counts)): if(i+1) % 10 == 0: print(counts[i], chr(i + ord('a'))) else : print(counts[i], chr(i+ord('a')), end = ' ') main() | cs |
<실행 결과>
참고 문헌 : Introduction to Programming Using Python / Y.DANIEL LIANG
※
본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.
교재 영어 원서를 직접 번역하여 정리한 게시물이므로 일부 오타, 의역이 존재할 수 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다.
※