티스토리 뷰


리스트의 합병과 반복

두개의 리스트를 합칠 때는 연결 연산자인 + 연산자를 사용할 수 있다.

>>> list1 = [1, 2, 3]
>>> list2 = [4, 5. 6]
>>> list = list1 + list2
>>> list
[1, 2, 3, 4, 5, 6]

리스트를 반복하는 것은 반복 연산자인 * 를 사용하면 된다.

>>> val = [1, 2, 3] * 3
>>> val
[1, 2, 3, 1, 2, 3, 1, 2, 3]

 

리스트의 길이

len() 연산은 리스트의 길이를 구하여 반환한다.

>>> letters = ['a', 'b', 'c', 'd']
>>> len(letters)
4

 

요소 추가하기

append() 를 사용해서 리스트의 끝에 새로운 항목을 추가할 수 있다.

>>> list = [1, 2]
>>> list.append(3)
>>> list
[1, 2, 3]

 

요소 삽입하기

insert() 메소드로 특정 위치에 새로운 요소를 추가한다. 첫번째 인자로 인덱스(위치), 두 번째 인자로 값(요소)를 인자로 갖는다. 항상 리스트의 끝에 새로운 요소를 추가하는 append() 와 사용 목적의 차이가 있다.

>>> list = [1, 2, 3]
>>> list.insert(0, 0)
>>> list
[0, 1, 2, 3]

 

요소 찾기

리스트에 어떤 요소가 있는지 찾을 때는 in 연산자를 사용한다.

>>> heroes = ["스파이더맨", "슈퍼맨", "헐크", "아이언맨", "배트맨"]
>>> "배트맨" in heroes
True

리스트 안에서 어떤 요소의 위치를 알아야 할 경우에는 index() 메소드를 사용한다.

>>> heroes = ["스파이더맨", "슈퍼맨", "헐크", "아이언맨", "배트맨"]
>>> if "슈퍼맨" in heroes"
...     heroes.index("슈퍼맨")
...
1

 

요소 삭제하기

pop() 메소드는 특정 위치에 있는 항목을 삭제한다. pop(1) 과 같이 인덱스를 인수로 주어 해당 인덱스의 항목이 삭제되는 동시에 삭제된 값을 반환한다.

>>> heroes = ["스파이더맨", "슈퍼맨", "헐크", "아이언맨", "배트맨"]
>>> heroes.pop(1)
'슈퍼맨'

remove() 메소드는 항목을 받아서 제거한다. pop() 과 다른 점은 ‘항목의 값’을 인자로 받아서 해당 요소와 일치하는 항목을 삭제한다는 것이다.

>>> heroes = ["스파이더맨", "슈퍼맨", "헐크", "아이언맨", "배트맨"]
>>> heroes.remove("헐크")
>>> heroes
['스파이더맨', '슈퍼맨', '아이언맨', '배트맨']

 

리스트 일치 검사

비교 연산자 ==, !=, >, < 를 사용하여 2개의 리스트를 비교할 수 있다. 먼저 2개의 리스트가 동일한 자료형의 요소를 가지고 있어야 하며, 첫 번째 요소부터 조건에 만족할 경우 순서대로 비교한다. 특정 순서에서 조건에 만족하지 않는다면 더 이상 비교를 수행하지 않고 결과(True 또는 False)를 반환하고 빠져 나온다. 

예를 들어 list1 과 list2를 == 연산자로 비교할 경우, 첫 번째 요소부터 순서대로 비교하되 서로 일치하지 않는 요소가 나타나면 즉시 False를 반환하고 검사를 종료하고 마지막 요소까지 일치할 경우에만 True를 반환한다. 즉 요소의 길이가 다른 경우는 항상 일치하지 않는다.

==와 같이 일치여부를 검사하는 경우가 아닌 !=, >, < 의 경우에도 첫 번째 요소부터 마지막 요소까지 모두 조건에 만족하는 경우에만 True 이다.

>>> list1 = [3, 4, 5]
>>> 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

 

리스트 정렬하기

2가지 방법이 있다. 

  • 리스트 객체의 sort() 메소드를 사용하는 방법
  • sorted() 내장 함수를 사용하는 방법

sort() 메소드는 리스트를 제자리(in-place)에서 정렬한다. 따라서 sort() 가 호출되면 원본 리스트가 변경된다. 아래의 코드에서 리스트 a는 정렬된 상태로 변경된다.

>>> a = [3, 2, 1, 5, 4]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5]

원본을 유지하고 새로이 정렬된 리스트를 원한다면 내장 함수인 sorted() 를 사용하는 것이 좋다. sorted() 는 정렬된 새로운 리스트를 반환한다.

>>> a = [3, 2, 1, 5, 4]
>>> b = sorted(a)
>>> b
[1, 2, 3, 4, 5]

리스트를 정렬할 때, key 매개 변수를 이용하여 요소들을 비교하기 전에 호출되는 함수를 지정할 수 있다. 예를 들어서 대소문자를 가리지 않고 비교하려면 key 매개 변수에 str.lower() 함수를 지정할 수 있다.

>>> sorted("A picture is worth a thousand words.".split(), key=str.lower)
['A', 'a', 'is', 'picture', 'thousand', 'words.', 'worth']

list.sort()와 sorted()는 모두 부울형의 reverse 매개 변수를 가진다. 이 매개 변수는 정렬 방향을 지정하는데 사용된다. 예를 들어서 리스트를 역순으로 정렬하려면 다음과 같이 한다.

>>> sorted([5, 2, 3, 1, 4], reverse=True)
[5, 4, 3, 2, 1]

 

문자열에서 리스트 만들기

문자열의 split() 메소드는 문자열을 분리하고 이것을 리스트로 만들어서 반환한다. 이 때 문자열을 분리하는 분리자를 지정할 수 있다. 만약 분리자가 지정되지 않으면 스페이스를 이용하여 문자열을 분리한다.

>>> str = "Where there is a will, there is a way"
>>> str.split()
['Where', 'there', 'is', 'a', 'will,', 'there', 'is', 'a', 'way']

만약 ,를 이용하여 문자열을 분리하려고 한다면 다음과 같이 한다.

>>> str = "Where there is a will, there is a way"
>>> str.split(",")
['Where there is a will,', ' there is a way']

 

리스트 연산 정리

이제까지 등장한 리스트 관련 연산들을 표로 정리하면 다음과 같다.

연산의 예설 명
mylist[2]인덱스 2에 있는 요소
mylist[2] = 3인덱스 2에 있는 요소를 3으로 설정한다.
del mylist[2]인덱스 2에 있는 요소를 삭제한다.
len(mylist)mylist의 길이를 반환한다.
“value” in mylist“value”가 mylist에 있으면 True
“value” not in mylist“value”가 mylist에 없으면 True
mylist.sort()mylist를 정렬한다.
mylist.index(“value”)“value”가 발견된 위치를 반환한다.
mylist.append(“value”)리스트의 끝에 “value”요소를 추가한다.
mylist.remove(“value”)mylist에서 “value”가 나타나는 위치를 찾아서 삭제한다.




'Python' 카테고리의 다른 글

[Python] sort()와 sorted()로 정렬하기  (0) 2018.10.27
[Python] 클래스와 객체  (0) 2018.10.27
[Python] COMPREHENSION (컴프리헨션)  (0) 2018.10.27
[Python] 시퀀스 자료형  (0) 2018.10.27
[Python] lambda 함수(무명 함수)  (0) 2018.10.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크