일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- AWS
- pam_tally2.so
- uptime -p
- svn: Can't find a temporary directory: Internal error
- uptime -V
- rm -f
- HISTTIMEFORMAT
- ln -Tfs
- 버프스위트
- 버프슈트
- 모바엑스텀 설치
- pam_tally -u
- histoy옵션
- CentOS-Base.repo
- burpsuite
- root로그인안됨
- aws 자격증 접수 오류
- AWS 시험후기
- 리눅스 telnet
- Unable to create a new virtual machine: No permission to perform this operation.
- Default vpc
- Default 삭제
- i-node full
- 프리티어 비용 발생
- pam_tally -u -r
- uptime -s
- Burp Suite
- 패키지 출력
- Default 생성
- 장치에 남은 공간이 없음
- Yesterday
- Today
- Total
2. 파이썬(Python) 리스트(List) 본문
리스트(List)란?
리스트는 숫자와 문자열만으로는 표현할 수 있는 부분의 한계가 존재해서 그 부분을 보안하기 위해 만든 것입니다.
1. 리스트 문법
리스트 명 = [값1, 값2, 값3, ...]
예제
>>> a = []
>>> a
[]
>>> a = list()
>>> a
[]
* 비어있는 리스트를 표현할 때는 list()를 쓰기도 합니다.
>>> b = [1,3,5,7]
>>> b
[1, 3, 5, 7]
>>> c = ['Hello', 'World']
>>> c
['Hello', 'World']
>>> d = [1, 2, 'Hello', 'World']
>>> d
[1, 2, 'Hello', 'World']
리스트는 a처럼 아무것도 없는 비어 있는 리스트([ ])로 표현할 수 있고 b처럼 숫자를 가지고 있을 수 있고 c처럼 문자열을 가질 수 있고 d처럼 숫자와 문자열을 같이 가질 수도 있습니다.
2. 리스트의 인덱싱(Indexing) 및 슬라이싱(Slicing)
리스트도 문자열처럼 인덱싱과 슬라이싱이 가능합니다. 인덱싱(Indexing)은 무엇인가 ‘가르킨다’라는 의미이고 슬라이싱(Slicing)은 무엇인가 ‘잘라낸다’라는 의미입니다.
2_1. 리스트의 인덱싱(Indexing) 사용하기
>>> a = [1,3,5]
>>> a
[1, 3, 5]
>>> a[0] # a[0]는 문자열에서 사용했던 것처럼 첫 번째 값을 가져옵니다.
1
>>> a[0] + a[2] # a[0]의 값(1)과 a[2]의 값(5)을 가져와서 합을 구합니다.
6
>>> a[-1] # a의 마지막 값을 가져 옵니다.
5
리스트도 문자열처럼 a[0]가 첫 번째 값을 가르키는 것을 기억해야 합니다. a[1]은 두 번째 값입니다.
>>> a = [1,3,['a','b']]
>>> a[0]
1
>>> a[1]
3
>>> a[2]
['a', 'b']
>>> a[3]
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
a[3]
IndexError: list index out of range
>>> a[-1]
['a', 'b']
a = [1,3,[‘a’,‘b’]]는 리스트안에 또 다른 리스트를 가지고 있습니다. 그래서 a[-1]을 하면 ‘b’가 아니라 [‘a’,‘b’]의 리스트가 하나로 나오게 됩니다. a[2]와 a[-1]은 같은 부분을 가리키고 있기 때문에 같은 값이 나옵니다.
그렇다면 하나 궁금증이 생기는데 리스트 a에 포함된 [‘a’,‘b’] 또 하나의 리스트에서 ‘a’나 ‘b’의 값은 인덱싱 할 수 없을까요?
2_1_1. 이중 리스트 인덱싱 하기
>>> a[2][0]
'a'
>>> a[2][1]
'b'
>>> a[-1][0]
'a'
>>> a[-1][1]
'b’
이렇게 2번째 리스트에 접근하기 위해서는 [][0] 또는 [][1]을 입력합니다.
2_1_2. 삼중 리스트 인덱싱 하기
>>> a = [1,2,['a','b',["hi","hello"]]]
>>> a
[1, 2, ['a', 'b', ['hi', 'hello']]]
>>> a[2][2][0]
'hi'
>>> a[2][2][1]
'hello'
>>> a[-1]
['a', 'b', ['hi', 'hello']]
>>> a[-1][-1][0]
'hi'
>>> a[-1][-1][1]
'hello'
이렇게 대괄호[]를 하나씩 추가시켜 주면 됩니다.
2_2. 리스트의 슬라이싱(Slicing) 사용하기
리스트 슬라이싱 | 문자열 슬라이싱 |
>>> a = [1,3,5] >>> a[0:2] [1, 3] | >>> a = "135" >>> a[0:2] '13' |
리스트 슬라이싱과 문자열 슬라이싱을 비교하면 선언할 때 대괄호와 큰따옴표의 차이만 있을 뿐 사용 방법은 동일합니다.
예제)
>>> a = [1,3,5,7,9]
>>> b = a[3:]
>>> c = a[:3]
>>> a,b,c
([1, 3, 5, 7, 9], [7, 9], [1, 3, 5])
2_2_1. 이중 리스트 슬라이싱 하기
>>> a = [1,2,['a','b']]
>>> a[1:]
[2, ['a', 'b']]
>>> a[2][0:]
['a', 'b']
>>> a[2][1:]
['b']
슬라이싱도 접근하는 방법은 인덱싱처럼 대괄호([])를 늘리면 됩니다.
2_2_2. 삼중 리스트 슬라이싱 하기
>>> a = [1,2,['a','b',['hi','bye']]]
>>> a[2][0:]
['a', 'b', ['hi', 'bye']]
>>> a[2][1:]
['b', ['hi', 'bye']]
>>> a[2][2:]
[['hi', 'bye']]
>>> a[2][3:]
[]
>>> a[2][2][0:]
['hi', 'bye']
>>> a[2][2][1:]
['bye']
3. 리스트 연산자
리스트 연산자는 ‘+’(더하기)와 ‘*’(반복하기)를 사용할 수 있습니다.
3.1 리스트 (+) 연산자
>>> a = [1, 3, 5]
>>> b = [2, 6, 8]
>>> c = a + b
>>> c
[1, 3, 5, 2, 6, 8]
리스트에서 ‘+’는 2개의 리스트의 값을 더하는 것이 아니라 리스트와 리스트를 합치는(더하는) 기능을 합니다. 문자열에서 “ab” + “cd”= “abcd”와 같은 원리입니다.
3.2 리스트 (*) 연산자
>>> a = [1,3,5]
>>> a * 3
[1, 3, 5, 1, 3, 5, 1, 3, 5]
리스트에서 ‘*’은 ‘*’뒤에 있는 숫자만큼 반복되어 새로운 리스트를 만들어 냅니다. 문자열에서 “ab”*3 =“ababab”와 같은 원리입니다.
4. 리스트의 값 변경, 삭제하기
4.1 리스트에서 하나의 값 변경
>>> a = [1, 3, 5]
>>> a
[1, 3, 5]
>>> a[1] = 7
>>> a
[1, 7, 5]
a의 2번째 값을 7로 변경했습니다.
4.2 리스트에서 하나의 값을 여러 개의 값으로 변경
a[1:2] | a[1] |
>>> a = [1, 7, 5] >>> a [1, 7, 5] >>> a[1:2] = ['a','b','c'] >>> a [1, 'a', 'b', 'c', 5] | >>> a = [1, 7, 5] >>> a [1, 7, 5] >>> a[1] = ['a','b','c'] >>> a [1, ['a', 'b', 'c'], 5] |
위에 표를 보시면 a[1:2]와 a[1]의 결과 값이 다른 것을 확인 할 수 있습니다.
첫 번째 a[1:2]는 (1<= a <2) a[1]와 a[2]까지를 말하는데 a[2]는 포함하지 않습니다. 따라서 a = [1, 7, 5]의 값 중 a[1]인 7만을 의미합니다. (즉, 1<= a <2 이 수식에 만족하는 사이의 값을 변경합니다.)
두 번째 a[1]은 사이의 값이 아니라 리스트 a의 두 번째 값을 변경하는 것입니다.
4.3 리스트 삭제하기([])
>>> a = [1, 3, 7]
>>> a[1:2] = []
>>> a
[1, 7]
리스트에 ([])를 입력하면 해당 부분의 값을 삭제합니다.
4.4 함수를 이용해서 리스트 삭제하기(del)
>>> a = [1,3,5,7,9]
>>> a
[1, 3, 5, 7, 9]
>>> del a[3]
>>> a
[1, 3, 5, 9]
a[3]인 7을 삭제합니다.
5. 리스트 관련 함수
문자열과 마찬가지로 리스트도 변수 이름 뒤에 마침표(.)를 붙인 다음에 함수 이름을 사용하면 됩니다.
5_1. 리스트에 값 추가1 (append)
>>> a = [1, 5, 7]
>>> a.append(2)
>>> a
[1, 5, 7, 2]
.append(x)는 리스트 맨 마지막에 x의 값을 추가합니다.
5_1_1. 리스트에 리스트 추가
>>> a
[1, 5, 7, 2]
>>> a.append([1,2])
>>> a
[1, 5, 7, 2, [1, 2]]
함수를 이용해서 리스트도 추가할 수 있습니다.
5_2. 리스트 정렬 (sort)
>>> a = [9, 2, 3, 1, 0]
>>> a
[9, 2, 3, 1, 0]
>>> a.sort()
>>> a
[0, 1, 2, 3, 9]
sort는 리스트의 값들은 오름차순으로 정렬해주는 역할을 합니다.
5_2_1. 리스트 알파벳 정렬
>>> a = ['i','h']
>>> a
['i', 'h']
>>> a.sort()
>>> a
['h', 'i']
5_3. 리스트 뒤집기 (reverse)
>>> a = [1, 3, 7, 5]
>>> a
[1, 3, 7, 5]
>>> a.reverse()
>>> a
[5, 7, 3, 1]
reverse() 함수는 리스트의 값을 거꾸로(반대로) 뒤집는 함수입니다.
5_4 위치 반환 (index)
>>> a
[5, 7, 3, 1]
>>> a.index(1)
3
>>> a.index(7)
1
>>> a.index(2)
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
a.index(2)
ValueError: 2 is not in list
index(x)함수는 x값을 입력하면 해당 리스트에 x값이 존재하면 존재하는 부분의 위치를 알려줍니다. 존재하지 않으면 위와 같이 에러 코드를 발생 시킵니다.
5_5. 리스트에 값 추가2 (insert)
>>> a = [1,2,3,4,5]
>>> a
[1, 2, 3, 4, 5]
>>> a.insert(2,7)
>>> a
[1, 2, 7, 3, 4, 5]
append() 함수처럼 값을 추가하지만 insert는 자기가 원하는 위치에 값을 추가(삽입) 할 수 있습니다. insert(x, y) x는 추가할 위치 y는 추가할 값입니다.
5_6. 리스트에 값 삭제 (remove)
>>> a
[1, 2, 7, 3, 4, 5]
>>> a.remove(7)
>>> a
[1, 2, 3, 4, 5]
remove(x)함수는 리스트에서 x를 삭제하는 함수입니다. (단, x값이 중복 되면 첫 번째만 삭제합니다.)
5_6. 리스트에 포함된 값 개수 세기 (count)
>>> a = [1, 1, 2, 3, 4, 1]
>>> a
[1, 1, 2, 3, 4, 1]
>>> a.count(1)
3
count(x)는 리스트 안에 x의 개수를 구합니다.
리스트 함수 정리
함수 | 설명 |
append(x) | x의 값을 마지막에 추가 |
sort() | 오름차순으로 정렬 |
reverse | 리스트의 값을 역순으로 변경 |
index(x) | x라는 값이 존재하면 위치 반환 |
insert(x,y) | 리스트 x위치에 y값 추가 |
remove(x) | 리스트 x값 삭제 |
count(x) | 리스트 x개수 반환 |
리스트, 튜플, 딕셔너리 연습문제 풀러가기
'Python > Python 기본 개념' 카테고리의 다른 글
5. 파이썬(Python) 제어문(if) (0) | 2017.08.23 |
---|---|
4. 파이썬(Python) 딕셔너리(Dictionary) (0) | 2017.08.07 |
3. 파이썬(Python) 튜플(Tuple) (0) | 2017.08.04 |
1. 파이썬(Python) 문자열2(인덱싱,슬라이싱,포매팅,함수) (0) | 2017.07.28 |
1. 파이썬(Python) 문자열1 (0) | 2017.07.26 |