본문 바로가기
Python/왕초보를 위한 파이썬

4.2. 문자열과 목록

by 가므자 2012. 4. 3.

문자열과 목록은 앞서 알아본 자료형 가운데 순서형(sequence)에 속하죠? 예전에 공부하긴 했지만 좀 더 자세히 알아봅시다.
문자열에서는 요런 식으로 한 글자마다 번호를 매긴답니다. 문자열을 만들어서 이것저것 시켜보세요.

>>> x = 'banana'
>>> x[0]            # 0번 글자는?
'b'
>>> x[2:4]          # 2번부터 4번 앞(3번)까지는?
'na'
>>> x[:3]           # 처음부터 3번 앞(2번)까지는?
'ban'
>>> x[3:]           # 3번부터 끝까지는?
'ana'

그렇다면 banana를 nanana로 바꿀 수는 있을까요?

>>> x[0] = 'n'

요렇게 해보면…

된다구요? 안됩니다. 문자열에 들어있는 글자는 바꿀 수가 없답니다.

그래도 꼭 바꾸고 싶다면 이렇게 할 수는 있죠.

>>> x = 'n' + x[1:]
>>> x
'nanana'

이 방법은 b를 n으로 바꾼 것이 아니고 ‘n’과 ‘anana’을 합쳐서 문자열 x에 새로 넣어준 것입니다.

이번엔 목록(list)을 살펴보도록 하겠습니다. 원소를 추가하는 것부터 해볼까요?

>>> prime = [2, 3, 7, 11]  # 2, 3, 7, 11을 원소로 갖는 목록 prime을 만듦
>>> prime.append( 5 )      # prime에 원소 5를 추가
>>> prime
[2, 3, 7, 11, 5]

sort 함수를 사용하면 정렬을 간단하게 할 수 있구요.

>>> prime.sort()           # prime을 원소 크기 순으로 정렬
>>> prime
[2, 3, 5, 7, 11]

원소를 삭제하는 것도 되지요. 목록도 문자열처럼 0번부터 번호를 매기는 거 아시죠?

>>> del prime[4]           # prime의 4번 원소를 삭제
>>> prime
[2, 3, 5, 7]

그리고 문자열과는 달리 원소를 바로 바꿔줄 수도 있습니다.

>>> prime[0] = 1
>>> prime
[1, 3, 5, 7]

목록 속에 목록을 집어넣을 수도 있지요. 피자가게에서 주문할 음식 목록을 볼까요?

>>> orders = ['potato', ['pizza', 'Coke', 'salad'], 'hamburger']
>>> orders[1]
['pizza', 'Coke', 'salad']
>>> orders[1][2]
'salad'

마찬가지로 목록을 사용해서 간단히 행렬을 표현할 수도 있습니다. 행렬은 아마 고등학교 때 배우죠?

>>> matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

지금까지 문자열과 목록을 따로따로 알아봤는데요, 이번엔 둘 다 갖고 놀아봅시다. 문자열을 목록으로 바꿔보도록 하죠.

>>> characters = [] >>> sentense = 'Be happy!' >>> for char in sentense: # sentense라는 목록의 각각의 항목 char에 대하여: ... characters.append(char) >>> print(characters) ['B', 'e', ' ', 'h', 'a', 'p', 'p', 'y', '!']

처음에 characters라는 변수를 만들었는데, 그 값에는 아무 원소도 없는 목록을 넣어줬습니다. 그리고, sentense라는 변수를 만들어서 'Be happy!'라는 문자열을 넣어줬죠. 전에 for 문을 배울 때 목록을 이용해서 반복을 한다고 했는데, 이번엔 문자열을 이용했습니다. 여기선 sentense가 가리키는 'Be happy!'의 글자 하나하나에 대해서 어떤 일을 수행하게 되죠. 첫번째 글자인 'B'를 characters라는 목록의 첫번째 원소로 넣고, 두번째 글자인 'e'를 characters의 두번째 원소로 넣는 식입니다.

오늘의 종합편! 우리 반 성적표를 만들어 봅시다! 학생 이름에 국, 영, 수 성적을 넣어주고,

>>> chulsu = [90, 85, 70]
>>> younghee = [88, 79, 92]
>>> yong = [100, 100, 100]	# 바로 접니다..
>>> minsu = [90, 60, 70]

우리 반 학생들을 전부 students 목록에 넣어줍니다.

>>> students = [chulsu, younghee, yong, minsu]

성적들이 어떤지 불러내볼까요?

>>> for scores in students: # students라는 목록의 각각의 항목 scores에 대하여 ... print(scores) [90, 85, 70] [88, 79, 92] [100, 100, 100] [90, 60, 70]

개인의 성적을 더해서 총점, 평균도 내 보세요.

>>> for scores in students: # students라는 목록의 각각의 항목 scores에 대하여 ... total = 0 ... for s in scores: # scores 라는 목록의 각각의 항목 s에 대하여: ... total = total + s ... average = total / 3 ... print(scores, total, average) ([90, 85, 70], 245, 81) ([88, 79, 92], 259, 86) ([100, 100, 100], 300, 100) ([90, 60, 70], 220, 73)

위에서는 총점을 구하기 위해 total이라는 변수를 사용해서 숫자를 누적시키는 방법을 써보았습니다.

>>> import operator
>>> for scores in students:
...     total = reduce(operator.add, scores)
...     average = total / len(scores)
...     print(scores, total, average)
([90, 85, 70], 245, 81)
([88, 79, 92], 259, 86)
([100, 100, 100], 300, 100)
([90, 60, 70], 220, 73)

요렇게도 할 수 있어요. 좀 더 있어보이지 않나요?

어디어디가 달라졌는지 한번 비교해보세요. 그럼, 오늘 강좌 끝~.

출처 : wikidocs 왕초보를 위한 파이썬

# List는 다음과 같이 표현된다.
 
        >>> name_list = ["장동건", "정우성", "김제동"]
        >>> print name_list.pop(2)    # remove and return item at index 2
        김제동
        >>> name_list.append("배용준")    # append object to end
        >>> print name_list[2]
        배용준
        >>> cool_girl = ["이효리", "문근영"]
        >>> name_list.append(cool_girl)    # append object to end
        >>> name_list
        ['장동건', '정우성', '배용준', ['이효리', '문근영']]
 
    # List는 List를 포함할 수 있다.
 
        name_list = ["장동건", "정우성", "배용준", ["이효리", "문근영"]]
 
    # List의 element 는 indexing 될 수 있다.
 
        >>> name_list = ["장동건", "정우성", ["이효리", "문근영"]]
        >>> print name_list[0]
        장동건
        >>> print name_list[2][1]
        문근영
 
    # List의 element 들은 slicing 될 수 있다 : colon(':')을 이용하여 index의 범위를 지정한다.
 
        >>> han_list = ["가", "나", "다", "라", "마", "바", "사"]
        >>> print han_list[0:6]
        ["가", "나", "다", "라", "마", "바"]
        >>> print han_list[3:]
        ["라", "마", "바", "사"]
        >>> print han_list[:3]
        ["가", "나", "다"]
 
    # List의 element 들은 delete 될 수 있다 : del 구문을 사용하며, slicing을 이용하여 범위를
      지정할 수도 있다.
 
        >>> a = [-1, 1, 66.25, 333, 333, 1234.5]
        >>> del a[0]
        >>> a
        [1, 66.25, 333, 333, 1234.5]
        >>> del a[2:4]
        >>> a
        [1, 66.25, 1234.5]

'Python > 왕초보를 위한 파이썬' 카테고리의 다른 글

4.4. 사전(Dictionaries)  (0) 2012.04.04
4.3. 튜플(Tuples)  (0) 2012.04.03
4.1. 자료형  (0) 2012.04.03
3.6. 연습문제  (0) 2012.04.03
3.5. 재귀적 용법  (0) 2012.04.03

댓글