티스토리 뷰
10.8 함수에서 리스트 반환하기(Returning a List from a Function)
- 함수가 리스트를 반환 할 때, 반환하는 리스트의 주소값(reference value)이 반환된다.
- 함수를 호출 할 때, 리스트 인자를 넘겨 줄 수 있다.
- 그리고 함수는 리스트 반환도 가능하다.
- 예를 들어, 아래의 함수는 넘겨받은 리스트의 요소들을 역순으로 배열한 리스트를 반환하는 함수이다.
*revers(lst)
1
2
3
4
5
6
7 |
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를 임포트한다.
# ch1과 ch2 사이의 랜덤 문자를 생성한다.
def getRandomCharacter(ch1, ch2):
return chr(randint(ord(ch1), 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
※
본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.
교재 영어 원서를 직접 번역하여 정리한 게시물이므로 일부 오타, 의역이 존재할 수 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다.
※
'파이썬 > 이론' 카테고리의 다른 글
[파이썬]리스트 검색하기(순차 탐색, 이진 탐색) (2) | 2018.01.05 |
---|---|
[파이썬]리스트 복사, 함수에 리스트 전달하기 (0) | 2018.01.02 |
[파이썬]리스트 기초(3) (0) | 2017.12.30 |
[파이썬]리스트 기초(2) (0) | 2017.11.25 |
[파이썬]리스트 기초(1) (0) | 2017.11.22 |
- Total
- Today
- Yesterday
- 버츄어박스
- 자바
- 명품 c++ 실습
- 파이썬 함수
- css
- 파이썬 for
- 파이썬 문자열
- 백준 10451
- 파이썬 if문
- 자바 에센셜 실습문제
- 파이썬 while
- 웹
- 백준
- 파이썬 터틀
- 파이썬 클래스
- 파이썬 선택문
- 파이썬
- 자료구조
- 자바스크립트 그래프
- css 박스
- 백준 1874
- 파이썬 연산자
- 자바스크립트 자료구조
- 백준 11501
- 파이썬 단계적 개선
- 파이썬 진수 변환
- css 그리드
- 파이썬 예제
- 파이썬 리스트
- 파이썬 객체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |