st = [1,2,3,4,5]
n1 = st[0]
n2 = st[4]
print(n1,n2)
하나만 콕 찝어서 계산하는 것이 인덱싱 연산이다. st라는 변수에 리스트가 담긴다
[1,2,3,4,5]에서 0번째는 1, 1번째는 2,..... 4번째는 5이다. 즉 0부터 시작이다.
st[1]를 쓰면 2를 콕 찝어서 꺼내는 것이다. 위의 코드는 1와 5가 출력된다.
st = [1,2,3,4,5]
st[0] = 5
st[4] = 1
print(st)
num =10 이라고하면 num에 10을 넣으라는 소리이다. 오른쪽의 값을 꺼내서 왼쪽에 넣는 것이다.
즉 st[0] = 5를 한다면 오른쪽의 5를 리스트의 0번 자리에 넣는 꼴이 된다.
같은 맥락으로 st[4] = 1은 오른쪽의 1을 리스트의 4번 자리에 넣는 꼴이다.
즉 [1,2,3,4,5]의 0번자리에 있는 1을 대신 5를 넣고 4번자리에 있는 5대신 1을 넣는 것이다.
출력하면 [5,2,3,4,1]가 나온다,
st = [1,2,3,4,5]
print(st[0],st[2])
변수에 저장된 값이 print로 넘어가는 것처럼 st[0]과 st[2]에 저장된 값이 print로 넘어가서 1,3이 출력된다.
st = [1,2,3,4,5]
print(st[-1],st[-2],st[-3])
0번자리는 리스트의 길이와 상관없이 무조건 맨 앞을 말하는 것이다
-1번 자리는 리스트의 길이와 상관없이 무조건 맨 뒤를 말하는 것이다. 음수는 뒤에서부터 앞으로 센다.
양수 기준으로 써도 되고, 음수 기준으로 써도 된다. st변수에 담긴 리시트에서
5는 4번 자리이자 -1번 자리인 것 처럼 말이다.
st1 = [1,2,3,4,5,6,7,8,9]
st2 = st1[2:5] # st1[2:5]를 꺼내 st2에 저장
인덱싱 연산은 리스트의 한 위치만 뽑는 것이고, 슬라이싱 연산은 리스트를 범위로 뽑는 것이다.
[a:b]는 a번 자리부터 (b-1)번 자리까지이다. [2:5]는 2번 자리부터 4번자리까지 대상이 되는 것이다.
슬라이싱 연산으로 범위를 지정해서 뽑으면 리스트형으로 뽑아져 나온다
연산은 꺼내고 저장(교체)하는 것이 전부이다.
단 3개를 꺼냈다고 무조건 3개를 넣을 수 있는 것이 아니다.
st1 = [1,2,3,4,5,6,7,8,9] #전체 9개의 수
st[2:5] = [0,0,0,0,0] #2번째부터 4번째까지 즉 3,4,5의 자리에 0 5개를 넣는다
print(st)
st[2:5]는 2번자리부터 4번자리까지 3개의 수를 뽑아서 리스트를 만드는데,
만약 st1[2:5] = [무언가] 이런식으로 [2:5]번 자리에 무언가를 넣으려고 할 때
3개의 수를 뽑았다고해서 똑같이 3개를 넣어야한다는 것이 아니라는 소리이다.
적게 넣어도 되고 더 많이 넣어도 된다. 적게 넣으면 리스트가 짧아지는 것이고 많이 넣으면 리스트가 길어지는 것.
위의 예시에서 2번자리부터 4번자리까지 3개의 수를 뽑았지만 '0' 5개를 넣었다
위 코드를 실행시키면 [1,2,0,0,0,0,0,6,7,8,9]가 출력되며, 원래 9개에서 총 11개의 수가 되었다.
즉 3개를 뽑아서 5개를 넣은 것이다. 위의 예시를 보며 이해하자.
[a:b] #a번 자리부터 b-1자리까지
[:b] #앞이 생략되면 0번 자리부터 b-1까지
[a:] #뒤가 생략되면 a번 자리부터 -1(맨 끝)까지
[:] #둘 다 생략이면 맨 앞부터 맨 끝까지
아래 예시를 보며 이해하자.
st = [1,2,3,4,5]
st[:3] = [0,0,0]
print(st) # [:3]은 앞이 생략되어있으므로 0부터 시작 [0:3]인 것이다
st = [1,2,3,4,5]
st[2:] = [0,0,0]
print(st) # [2:]는 뒤가 생략되어있으므로 -1(맨 끝)까지 이다.
st = [1,2,3,4,5]
st[:] = [0.0,0,0,0]
print(st) # [:는] 둘 다 생략이므로 맨 앞부터 맨 끝까지 이다.
st = [1,2,3,4,5]
st[:] = [0]
print(st)
리스트 전체를 0 하나로 교체한 것이다.
st = [1,2,3,4,5]
st[:] = []
print(st)
리스트 전체 내용 삭제이다. 리스트를 비우는 하나의 방법으로 기억하자.
st1 = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
st2 = st1[0:9:2] # st1[0] ~ st1[8]까지 2칸씩 뛰면서 꺼내라는 뜻이다.
print(st2)
출력하면 [1,3,5,7,9]가 나온다. 필요할 때만 쓰자
리스트형과 문자형
리스트형 : 하나 이상의 값을 묶어 놓음 ex) [3,5,7,9]
문자형 : 하나 이상의 문자를 묶어 놓음 ex) "안녕하세요"
둘 다 하나 이상의 값 또는 데이터가 묶인 것이다.
리스트는 대입 연산자(=)가 있을 때 대입연산자의 오른쪽 또는 왼쪽에 놓아서 값을 꺼낼 수도 있고, 넣을수도 있다.
문자열은 print를 통해 참조하는 것은 가능하나, 이미 따옴표로 만들어진 문자열은 일부를 변경할 수 없다.
즉 둘 다 참조는 가능하지만 리스트는 변경 가능, 문자열은 변경 불가능의 차이가 있다.
문자열이 변경 불가능한 이유는 효율성을 위해서이다.
효율성은 속도가 빠르고 메모리를 적게 쓰는 것을 말한다. 보통 둘 중 하나만 잘해도 효율성이 좋다고 한다.
st = [1,2,3,4,5]
st[2] #3 출력됨
str = "SIMPLE"
str[2] #'M' 출력됨
리스트를 대상으로 인덱싱이 가능한 것처럼 문자열도 가능하다
str = [1,2,3,4,5,6,7]
st[2:5] #[3,4,5] 출력됨
str = "SIMPLEST"
str[2:5] #'MPL' 출력됨
리스트를 대상으로 슬라이싱이 가능한 것처럼 문자열도 가능하다.
str = "happy"
str[0] = "D" #오류가 나온다
리스트와 달리 문자열은 저장된 것을 변경하지 못한다.
for i in[1,2,3]:
print(i, end = '') #1 2 3 출력됨
for i in 'Happy':
print(i, end = '') #H a p p y 출력됨
리스트를 반복시키는 것 처럼 문자열도 반복시킬 수 있다.
파이썬은 하나의 문자도 문자열로 처리한다.
'프로그래밍 언어 > 파이썬 기초' 카테고리의 다른 글
파이썬 여러가지 기능의 함수들 (0) | 2023.05.18 |
---|---|
파이썬 '객체' (0) | 2023.05.18 |
파이썬 type 등등 (0) | 2023.05.18 |
파이썬 input함수, for 반복문 (0) | 2023.05.18 |
파이썬 함수 (0) | 2023.05.18 |