티스토리 뷰
리스트의 합병과 반복
두개의 리스트를 합칠 때는 연결 연산자인 + 연산자를 사용할 수 있다.
>>> 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