파이썬 함수 리스트 반환 - paisseon hamsu liseuteu banhwan

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

<실행 결과>

파이썬 함수 리스트 반환 - paisseon hamsu liseuteu banhwan

참고 문헌 : Introduction to Programming Using Python / Y.DANIEL LIANG


본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.


교재 영어 원서를 직접 번역하여 정리한 게시물이므로 일부 오타, 의역이 존재할 수 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다.