[Python] List Operators, List Methods

1. 리스트 합치기

1) ‘+’ Operator overloading

⇒ ‘+’ 연산자를 이용하여 리스트 연결(합병) 가능.

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

2) ‘*’ Operator overloading

⇒ * 연산자를 이용하여 리스트 반복 가능.

`»> nums = [1,2,1]

nums = nums * 2 nums [1,2,1,1,2,1]`

3) extend() method

⇒ extend method를 이용하여 list 객체에 list를 더할 수 있다.

`»> list1 = [1,2,1]

list1 [1,2,1] list1.extend(list1) list1 [1,2,1,1,2,1]`

⇒ 단, 이때 list1.extend(list1)와 같이 이용할 경우 list 객체에 바로 extend되고 반환 값은 list1.extend(list1)한 결과가 아니므로 아래와 같이 사용하지 않도록 주의한다.

`»> list1 = [1,2,1]

list2 = list1.extend(list1) list2 None`

4) map()을 이용하여 병합하기

>>> list1 = [[1,2], [5,6]]
>>> list2 = [[3,4], [7,8]]
>>> merge_list = list(map(list.__add__, list1, list2))
>>> merge_list
[[1,2,3,4], [5,6,7,8]]

4-1) flatten으로 내부 리스트를 하나의 리스트로 만들기

>>> list1 = [[1,2], [5,6]]
>>> list2 = [[3,4], [7,8]]
>>> merge_list = list(map(list.__add__, list1, list2))
>>> merge_list
[[1,2,3,4], [5,6,7,8]]
>>> flatten_list = list(itertools.chain(*merge_list))
>>> flatten_list
[1,2,3,4,5,6,7,8]

5) zip() 이용하여 병합하기

⇒ 동일한 위치의 list를 하나의 tuple로 묶어서 merge 함

>>> list1 = [[1,2], [5,6]]
>>> list2 = [[3,4], [7,8]]
>>> list3 = list(zip(list1,list2))
>>> list3
[([1, 2], [3, 4]), ([5, 6], [7, 8])]

2. 리스트의 길이

1) len() method

⇒ 리스트의 길이를 구하여 반환

`»> list1 = [1,2,1]

len(list1) 3`

3. 리스트 요소 추가하기

1) append() method

⇒ 리스트의 맨 끝에 새로운 항목을 추가.

`»> nums = [1,2,1]

nums.append(1) nums [1,2,1,1] letters = [‘h’,’i’] nums.append(letters) nums [1,2,1,1,[‘h’,’i’]]`

4. 요소 삽입하기

1) insert() method

⇒ 특정위치에 새로운 요소를 추가.

첫번째 인자 : 인덱스(위치) (0부터 시작)

두번째 인자 : 값(요소)

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

5. 요소 찾기

1) ‘in’ Operator

⇒ 리스트에 특정 요소가 있는지 찾을 수 있음

>>> fruits = ["사과", "바나나", "포도"]
>>> "바나나" in fruits
True

2) index() method

⇒ 리스트 안에서 특정 요소의 위치를 찾아야할 경우.

>>> fruits = ["사과", "바나나", "포도"]
>>> if "바나나" in fruits:
			fruits.index("바나나")
1

3) count() method

⇒ 리스트의 특정 원소 개수 구하기

>>> nums [1,2,2,3,3,3,4]
>>> nums.count(2)
2
>>> nums.count(3)
3

6. 요소 삭제하기

1) pop() method

⇒ 리스트 특정 위치의 항목 삭제. 인덱스를 인수로 주고 인덱스 항목을 삭제한 후 삭제된 값을 반환함.

>>> fruits = ["사과", "바나나", "포도"]
>>> fruits.pop(1)
'바나나'

2) remove() method

항목의 값을 인자로 받아 일치하는 항목을 삭제

>>> fruits = ["사과", "바나나", "포도"]
>>> fruits.remove("바나나")
>>> fruits
["사과", "포도"]

단, 이때 반환값은 None.

7. 리스트 일치 검사

1) ‘==’, ‘!=’, ‘>’, ‘<’ Operator Overloading

⇒ 상기 비교연산자를 이용하여 2개의 리스트를 비교가능.

⇒ 동일한 자료형의 요소를 가지고 있어야 함.

⇒ 네가지 연산자 모두 첫번째 요소부터 조건에 만족할 경우 순서대로 비교하고 중간에 조건에 만족하지 않는 요소가 있으면 False를 반환하고 더 이상 비교를 수행하지 않는다.

>>> nums1 = [1,2,3]
>>> nums2 = [5,6,7]
>>> nums1 < nums2
True

8. 리스트의 최소값, 최대값 찾기

1) max(), min() method

>>> nums = [1,2,3,4,5]
>>> max(nums)
5
>>> min(nums)
1

9. 리스트 정렬하기

1) 리스트 객체의 sort() method

⇒ 리스트를 제자리(in-place)에서 정렬함. 즉 원본 리스트가 변경 됨.

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

reverse 매개변수

역순으로 정렬하고자 할때, True로 넘겨준다.

2) sorted() 내장 함수

원본은 유지하고 새로이 정렬된 리스트를 반환

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

reverse 매개변수

역순으로 정렬하고자 할때, True로 넘겨준다.

2-1) key 매개변수 활용

⇒ 리스트 정렬 시, key 매개변수를 활용하여 요소 정렬 전(정렬을 위한 비교 전) 호출되는 함수를 지정할 수 있다.

>>> sorted("Let's think again.".split(), key = str.lower)
['again.', "Let's", 'think']

예를들어, 위와 같이 대소문자를 가리지 않고 비교하려면 key 매개변수로 str.lower()함수를 지정할 수 있다. (단, 이때 매개변수로 지정하는 것이므로 괄호를 붙여 호출형태로 적지 않도록 주의)