Ubermensch
파이썬 리스트 자료형 본문
리스트 자료형
파이썬에서 리스트를 만들 때는 대괄호[]로 감싸주고 각 요소값들은 쉼표,로 구분해준다.
리스트명 = [요소1,요소2,요소3,요소4, ...]
리스트는 다양한 방법으로 사용할 수 있다.
>>> a=[]
>>> b=[1,2,3]
>>> c=['Not','Today']
>>> d=[1,2,'Not','Today']
>>> e=[1,2,['Not','Today']]
a처럼 아무것도 포함하지 않은, 빈 리스트일 수도 있고a=list()와같다. e처럼 리스트 자체를 요소로 가질 수도 있다.
즉, 리스트 안에는 어떠한 자료형도 포함할 수 있다.
리스트의 인덱싱과 슬라이싱
리스트도 문자열처럼 인덱싱과 슬라이싱을 할 수 있다.
- 리스트의 인덱싱
>>> a=[1,2,3]
>>> a
[1, 2, 3]
>>>
>>> a[0]
1
>>> a[0]+a[2]
4
문자열처럼 Python은 숫자를 0부터 센다. 문자열이랑 다를게 없어서 어렵지 않다.
>>> a=[1,2,[3,4,5]]
>>> a[2]
[3, 4, 5]
>>> a[2][2]
5
리스트에는 리스트도 포함할 수 있다. 그러면 저기 a의 세번째 요소인 [3,4,5] 내부 값을 인덱싱 하고싶으면 어떻게 해야할까?
위에처럼 리스트명[리스트요소의 인덱스][내부 리스트의 인덱스]
이렇게 가져오면 된다.
삼중 리스트에서 인덱싱 하기
>>> a=[1,2,['A','B',['love','live']]]
>>> a[2][2][0]
'love'
위 예제는 리스트 안에 리스트, 또 그 리스트 안에 리스트가 있는 식이다
a =
1
2
A
B
love
live
이런식으로...만약 love 라는 요소를 가져오고 싶으면, a의 세 번째 요소 ['A','B',['love','live']]
그 중에서도 세 번째 요소인 ['love','live'] 에서 0번째 인덱스를 가져와야 하므로 a[2][2][0] 으로 인덱싱 한다.
- 리스트 슬라이싱
리스트 슬라이싱도 문자열 슬라이싱과 똑같다. 슬라이싱은 잘라온다. 예제를 보자.
>>> a=[1,2,3,4,5,6]
>>> b=a[:2]
>>> c=a[2:]
>>> b
[1, 2]
>>> c
[3, 4, 5, 6]
슬라이싱 할 때에는 슬라이싱 대상[시작위치:가져올 갯수]
로 표기해주면 된다. :앞, 뒤에 아무것도 없으면 처음 혹은 끝까지 다 가져오겠단 뜻이다.
중첩된 리스트에서 슬라이싱 하기
리스트 내부의 리스트를 슬라이싱 하는 방법도 어렵지 않다. 아래를 보자.
>>> a=[1,2,3,['red','blue','green'],4,5,6]
>>> color = a[3][:3]
>>> color
['red', 'blue', 'green']
리스트 연산자
리스트 역시 + 기호를 이용하여 더할 수 있고, 문자열처럼 * 를 이용하여 반복할 수 있다.
- 리스트 더하기(+)
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a+b
[1, 2, 3, 4, 5, 6]
리스트끼리 더하는(+) 것은, 두 리스트를 합치는기능을 한다.
- 리시트 반복하기(*)
>>> myself = ['I',' do ']
>>> myself * 3
['I', ' do ', 'I', ' do ', 'I', ' do ']
리스트에서 (*) 곱하는 것은 해당 리스트를 그 수만큼 반복하라는 뜻이다.
리스트의 수정 / 변경 / 삭제
- 리스트에 있는 하나의 요소 수정하기
>>> a=[1,3,5,6]
>>> a[3]=7
>>> a
[1, 3, 5, 7]
리스트에서 수정하고 싶으면, 그냥 수정하고 싶은 값에 다른 값을 덮어 써주면 된다.
- 리스트에서 연속된 범위의 값 수정하기
a=[1,2,3,4,5]
>>> a[:2] = ['a','b']
>>> a
['a', 'b', 3, 4, 5]
예제 코드만 봐도 수정이 어떻게 진행되는지 어렵지 않게 파악이 가능하다. 단 여기서 주의해야 할 점이 있다.
아래 코드와 비교해보자
>>> a=[1,2,3,4,5]
>>> a[0] = ['a','b']
>>> a
[['a', 'b'], 2, 3, 4, 5]
리스트에는 리스트를 요소로 포함할 수 있기 때문에, 위 코드와 완전히 다른 결과가 나온 것을 볼 수 있다.
이런 점을 주의해서 원하는 결과에 맡게 코딩을 하자.
- [] 사용해 리스트 요소 삭제하기
>>> a
[['a', 'b'], 2, 3, 4, 5]
>>> a[:2]=[]
>>> a
[3, 4, 5]
[] 는 빈 리스트이다. 이 [] 를 이용해서 리스트 요소를 삭제할 수 있다.
- del 함수 사용해 리스트 요소 삭제하기
>>> a
[3, 4, 'b']
>>> del a[2]
>>> a
[3, 4]
del a[x]는 x번째 요소 값을 삭제한다. del a[x:y]는 a요소의 x부터 y까지 삭제한다.
리스트 관련 함수들
- 리스트 요소 추가(append)
리스트.append(x) : 리스트의 맨 마지막에 x를 추가시킨다.
>>> a=['lost','my']
>>> a.append('way')
>>> a
['lost', 'my', 'way']
리스트 안에는 어떠한 자료형도 추가할 수 있다.
리스트 안에 리스트를 append해보자.
>>> a.append(['lost','my','way'])
>>> a
['lost', 'my', 'way', ['lost', 'my', 'way']]
- 리스트 정렬(sort)
리스트.sort() : 리스트의 요소를 순서대로 정렬해준다.
>>> a=[0,-1,7,3,9,2]
>>> a.sort()
>>> a
[-1, 0, 2, 3, 7, 9]
>>> b=['c','A','y','d']
>>> b.sort()
>>> b
['A', 'c', 'd', 'y']
- 리스트 뒤집기(reverse)
리스트명.reverse() : 리스트를 거꾸로 뒤집어준다. 정렬해서 뒤집어주는게 아니라 진짜 순서를 거꾸로위치시킨다.
>>> a=[0,-1,7,3,9,2]
>>> a.reverse()
>>> a
[2, 9, 3, 7, -1, 0]
- 위치반환(index)
리스트명.index(x) : x라는 값의 위치를 반환한다.
>>> a=[1,2,3,4]
>>> a.index(2)
1
리스트 요소의 index 시작값은 0 인 것을 까먹지 말자.
>>> a=[1,2,3,4]
>>> a.index('나비')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: '나비' is not in list
만약 요소에 없는 값을 찾아달라고 index 함수를 사용하면, 값 오류 에러(ValueError)가 발생한다.
- 리스트에 요소 삽입(insert)
리스트명.insert(x,y): x번째 위치에 y의 값을 삽입하라는 함수
>>> a=[1,2,3,4]
>>> a.insert(3,'A')
>>> a
[1, 2, 3, 'A', 4]
- 리스트 요소 제거(remove)
리스트명.remove(x) : 리스트에서 첫번째로 나오는 x를 삭제한다.
>>> a=[1,2,3,2,4]
>>> a.remove(2)
>>> a
[1, 3, 2, 4]
- 리스트 요소 끄집어내기(pop)
리스트명.pop() : 리스트에서 맨 마지막 요소를 반환하고 , 해당 요소를 리스트에서 삭제한다.
>>> a=['ready','to','let','go']
>>> a.pop()
'go'
>>> a
['ready', 'to', 'let']
리스트명.pop(x) : 리스트의 x번째 요소를 반환하고, 해당 요소를 리스트에서 삭제한다.
>>> a=[1,2,3,4,5]
>>> a.pop(2)
3
>>> a
[1, 2, 4, 5]
- 리스트에 존재하는 요소 x의 갯수 세기(count)
리스트명.count(x) : 리스트에 요소 x가 몇개있는지 세서, 그 갯수를 반환
>>> a=[1,2,2,3,3,3]
>>> a.count(2)
2
>>> a.count(3)
3
- 리스트의 확장(extend)
리스트명.extend(x) : x에는 리스트만 올 수 있다. 원래의 리스트에 해당 리스트를 추가한다.
>>> a=[1,2,3]
>>> a.extend([4,5])
>>> a
[1, 2, 3, 4, 5]
>>> del a[3:]
>>> a
[1, 2, 3]
>>> a +=[4,5]
>>> a
[1, 2, 3, 4, 5]
>>> del a[3:]
>>> a
[1, 2, 3]
>>> a.append([4,5])
>>> a
[1, 2, 3, [4, 5]]
a.extend([4,5]) 는 a+=[4,5] 와 동일하다. 하지만 위의 예제에서 확인할 수 있듯이, a.append([4,5])와는 결과값이 다르다.
'Python' 카테고리의 다른 글
Mac OS X Python 가상환경 설정하기 (0) | 2019.02.12 |
---|---|
파이썬 튜플 자료형 (0) | 2019.02.05 |
파이썬 문자열 연산 (0) | 2019.02.02 |
파이썬 자료형 - 숫자형 , 문자형 (0) | 2019.02.02 |
파이썬 시작하기 (0) | 2019.02.02 |