파이썬 리스트(list) 정리

Python

Posted by kwon on 2019-10-13

리스트 관련 함수

  • index(item) : 리스트 안에서 해당 item의 index번호를 리턴, 없는 경우 ValueError
1
2
a = ['수학', '과학', '영어', '국어']
print(a.index('영어'))

-> 결과 : 2

  • count(item) : 매칭되는 갯수를 리턴

ex)

1
2
a = [1, 5, 4, 4, 1, 2, 9]
print(a.count(4), a.count(9))

-> 결과 : 2 1

  • in 절로 list 안에 포함되어 있는지 확인 가능
1
2
3
4
5
5 in [1, 2, 3, 4, 5] # True

15 in [10, 20, 30, 40, 50] # false

25 not in [10, 20, 30, 40, 50] # True

리스트 원소 추가

  • append(item) : 리스트의 마지막에 item 원소 추가
1
2
3
a = [1, 2, 3, 4, 5]
a.append(6)
print(a)

-> 결과 : [1, 2, 3, 4, 5, 6]

  • insert(입력할 index, 값) : 원하는 index에 원소 삽입
1
2
3
a = [1, 2, 3, 4, 5]
a.insert(1, 6)
print(a)

-> 결과 : [1, 6, 2, 3, 4, 5]

  • extend(추가할 리스트) : 리스트를 추가로 붙임. 인자로는 리스트만 가능, 원래의 리스트에 추가할 리스트를 더하게 됨.
1
2
3
a = [1, 2, 3]
a.extend([4, 5, 6])
print(a)

-> 결과 : [1, 2, 3, 4, 5, 6]

리스트 원소 삭제

  • del 키워드를 통한 삭제
1
2
3
a = [1, 2, 3, 4, 5]
del a[2]
print(a)

-> 결과 : [1, 2, 4, 5]

  • remove(item) : 리스트 내의 item 삭제, item이 없으면 ValueError
1
2
3
a = [1, 2, 3, 4, 5]
a.remove(4)
print(a)

-> 결과 : [1, 2, 3, 5]

  • del키워드와 list.index(item)을 같이 사용하면 remove처럼 사용 가능
1
2
3
a = [1, 2, 3, 4, 5]
del a[a.index(5)]
print(a)

-> 결과 : [1, 2, 3, 4]

  • pop() : 리스트의 마지막 원소를 돌려주고 그 원소는 삭제한다.
  • pop(x) : 리스트의 x번째 원소를 있는 반환하고 삭제
1
2
3
4
a = [1, 4, 2, 10, 8, 5, 23]
print(a.pop(), a)
a = [1, 4, 2, 10, 8, 5, 23]
print(a.pop(2), a)

-> 결과 :

23 [1, 4, 2, 10, 8, 5]

2 [1, 4, 10, 8, 5, 23]

리스트 슬라이싱(Slicing)

리스트에서 일부 부분 요소들을 선택하기 위하여 슬라이스(Slice)를 사용한다. 슬라이스는 “리스트[처음인덱스:마지막인덱스]”와 같이 인덱스 표현에서 부분집합의 범위를 지정하는 것이다. 인덱스는 0 부터 시작하며, 마지막 인덱스를 원하는 “마지막 요소의 인덱스 + 1”을 의미한다. 만약 처음인덱스가 생략되면, 0 부터 시작되며, 마지막 인덱스가 생략되면, 리스트의 끝까지 포함됨을 의미한다.

1
2
3
4
5
a = [1, 3, 5, 7, 9]
a1 = a[1:3] # index 1 ~ 2
a2 = a[:2] # index 0 ~ 1
a3 = a[3:] # index 3 부터 마지막 요소까지
print(a1, a2, a3)

-> 결과 : [3, 5] [1, 3] [7, 9]

리스트 정렬

  • reverse() : 리스트를 거꾸로 뒤집음
1
2
3
a = [1, 3, 5, 6, 10]
a.reverse()
print(a)

-> 결과 : [10, 6, 5, 3, 1]

  • sort() : 정렬, 기본 값은 오름차순 정렬, reverse=True 옵션 지정시 내림차순 정렬
1
2
3
4
5
6
7
a = [1, 4, 2, 10, 8, 5, 23]
a.sort()
print(a)

a = [1, 4, 2, 10, 8, 5, 23]
a.sort(reverse=True)
print(a)

결과 :

[1, 2, 4, 5, 8, 10, 23]

[23, 10, 8, 5, 4, 2, 1]

  • sort의 key 옵션, key 옵션에 지정된 결과에 따라 정렬
1
2
3
4
5
m = "My name is yeoungeon kwon"
m = list(m.split())
print(m)
m.sort(key=len) # 원소의 길이에 따라 정렬
print(m)

-> 결과 :

[‘My’, ‘name’, ‘is’, ‘yeoungeon’, ‘kwon’]

[‘My’, ‘is’, ‘name’, ‘kwon’, ‘yeoungeon’]

  • sorted(list) : 순서대로 정렬, 정렬된 리스트를 반환
    - 정렬된 결과를 반환하는 함수는 본체를 변형하지 않음.
1
2
3
a = [1, 4, 2, 12, 8]
b = sorted(a)
print(a, b)

-> 결과 : [1, 4, 2, 12, 8] [1, 2, 4, 8, 12]

  • reversed(list) : 거꾸로 뒤집기, iterable한 객체를 반환, 확인을 위해 list로 형변환 필요

(iterable 의 의미는 member를 하나씩 차례로 반환 가능한 object를 말함. iterable 의 예로는 sequence type인 list, str, tuple 이 대표적이다. )

1
2
3
a = [1, 4, 2, 12, 8]
b = list(reversed(a))
print(a, b)

-> 결과 : [1, 4, 2, 12, 8] [8, 12, 2, 4, 1]

List Comprehension

리스트의[…] 괄호 안에 for 루프를 사용하여 반복적으로 표현식을 실행해서 리스트의 요소들을 정의하는 특별한 용법이 있는데, 이를 List Comprehension이라 한다. 이는 아래와 같은 문법으로 컬렉션으로부터 요소를 하나씩 가져와 표현식을 실행하여 그 결과를 리스트에 담는 방식이다. 여기서 if조건식은 옵션으로 추가될 수 있는데 for 루프에서 이 조건식에 맞는 요소만 표현식을 실행하게 된다.

- [표현식 for 요소 in 컬렉션 [if 조건식]]

아래 예제는 0~9의 숫자들 중 3으로 나눈 나머지가 0인 숫자를 제곱한 리스트를 구한 예이다.

1
2
a = [n ** 2 for n in range(10) if n % 3 == 0]
print(a)

결과 : [0, 9, 36, 81]

참조
https://wikidocs.net/16041
http://pythonstudy.xyz/python/article/12-%EC%BB%AC%EB%A0%89%EC%85%98--List