본문으로 바로가기

[파이썬 강의] - 3.1 반복문(리스트)

category 파이썬 2021. 2. 17. 18:56

리스트


변수를 박스로 애기했다면 리스트는 서랍으로 애기할 수 있다.

박스는 한가지 데이터만 넣을 수 있었지만, 서랍에는 여러개의 데이터를 넣을 수 있다.

 

 

리스트 만들기


대괄호[]에 요소를 쉼표로 구분하여 입력해 리스트를 생성한다. 대괄호 내부에 넣는 자료를 요소(element)라고 한다.

※ 파이썬은 숫자를 0부터 세므로 첫번째 요소는 인덱스 0에 저장되어져 있다.

#예시1
hagsig=[1,2,"tistory"]

print("hagsig[0] :", hagsig[0])
print("hagsig[1] :",hagsig[1])
print("hagsig[2] :",hagsig[2])

#실행
hagsig[0] : 1
hagsig[1] : 2
hagsig[2] : tistory

 

인덱스에 요수를 넣어 뒤에서부터 출력할수도 있다.

#예시2
hagsig=[1,2,"tistory"]

print("hagsig[-1] :", hagsig[-1])
print("hagsig[-2] :", hagsig[-2])
print("hagsig[-3] :", hagsig[-3])

#실행
hagsig[-1] : tistory
hagsig[-2] : 2
hagsig[-3] : 1

 

대괄호 두개를 써서 선택한 요소의 특정 위치의 글자만 출력할수도 있다.

#예시3
hagsig=[1,2,"tistory"]

print("hagsig[2] :", hagsig[2])
print("hagsig[2][0] :", hagsig[2][0])
print("hagsig[2][6] :", hagsig[2][6])

#실행
hagsig[2] : tistory
hagsig[2][0] : t
hagsig[2][6] : y

 

 

리스트 연산자


문자열에 연산자를 이용하여 문자를 합치고 반복했던 것처럼 리스트도 연산자를 사용해 같은 기능을 이용할 수 있다.

#예시
hagsig_a=[1,2,3]
hagsig_b=[4,5,6]

print("hagsig_a + hagsig_b :", hagsig_a + hagsig_b)
print("hagsig_a * 3 :", hagsig_a * 3)

#실행
hagsig_a + hagsig_b : [1, 2, 3, 4, 5, 6]
hagsig_a * 3 : [1, 2, 3, 1, 2, 3, 1, 2, 3]

 

 

리스트 길이 구하기


리스트의 길이를 구할때에는 len() 함수를 사용한다.

#예시
hagsig=[1,2,3]

print("len(hagsig) :", len(hagsig))

#실행
len(hagsig) : 3

 

 

리스트 요소 변경하기


다음과 같은 방법으로 리스트 요소를 변경할 수 있다.

#예시
hagsig=[1,2,"tistory"]
print("변경 전 :", hagsig)

hagsig[2]="blog"
print("변경 후 :", hagsig)

#실행
변경 전 : [1, 2, 'tistory']
변경 후 : [1, 2, 'blog']

 

 

리스트 요소 추가하기


리스트에 요소를 추가할때는 다음과 같은 함수를 사용한다.

리스트 요소 추가 함수
함수 설명
append() 리스트 뒤에 요소를 추가
insert() 리스트의 특정 위치에 요소를 추가
extend() 리스트 뒤에 다수의 요소를 추가
#예시1. append() 함수
hagsig_a=[1,2,3]
print("항목 추가전 :", hagsig_a)

hagsig_a.append(4)
print("append(4) 결과 :", hagsig_a)

hagsig_a.append(5)
print("append(5) 결과 :", hagsig_a)

#실행
항목 추가전 : [1, 2, 3]
append(4) 결과 : [1, 2, 3, 4]
append(5) 결과 : [1, 2, 3, 4, 5]

 

#예시2. insert() 함수
hagsig_b=[1,3,5]
print("항목 추가전 :", hagsig_b)

hagsig_b.insert(1,2)
print("insert(1,2) 결과 :", hagsig_b)

hagsig_b.insert(3,4)
print("insert(3,4) 결과 :", hagsig_b)

#결과
항목 추가전 : [1, 3, 5]
insert(1,2) 결과 : [1, 2, 3, 5]
insert(3,4) 결과 : [1, 2, 3, 4, 5]

 

#예시3. extend() 함수
hagsig_c=[1,2,3]
print("항목 추가전 :", hagsig_c)

hagsig_c.extend([4,5])
print("extend([4,5]) 결과 :", hagsig_c)

#실행
항목 추가전 : [1, 2, 3]
extend([4,5]) 결과 : [1, 2, 3, 4, 5]

 

 

리스트 요소 제거하기


리스트 요소를 제거하기 위해서 다음과 같은 함수를 사용한다.

리스트 요소 제거 키워드·함수
키워드·함수 설명
del 인덱스를 지정해 특정 요소를 제거
pop() 인덱스를 지정해 특정 요소를 제거
※ 인덱스 미지정 시 맨뒤의 요소 제거
remove() 특정값을 지정하여 제거
※ 중복 값이 있으면제일 앞쪽의 요소 제거 
clear() 리스트의 모든 요소를 제거
#예시1 del
hagsig=[1,2,3,4,5]
print("삭제하기전 :", hagsig)

del hagsig[2]
print("del 결과 :", hagsig)

#실행
삭제하기전 : [1, 2, 3, 4, 5]
del 결과 : [1, 2, 4, 5]

 

#예시2 pop
hagsig=["blog","hagsig","tistory"]
print("삭제하기 전 :", hagsig)

hagsig.pop(2)
print("pop 결과 :", hagsig)

#실행
삭제하기 전 : ['blog', 'hagsig', 'tistory']
pop 결과 : ['blog', 'hagsig']

 

#예시3 remove
hagsig=["security","blog","hagsig"]
print("삭제하기 전 :", hagsig)

hagsig.remove("security")
print("remove 결과 :", hagsig)

#실행
삭제하기 전 : ['security', 'blog', 'hagsig']
remove 결과 : ['blog', 'hagsig']

 

#예시4 clear
hagsig=[1, 2, 3]
print("삭제하기 전 :", hagsig)

hagsig.clear()
print("clear 결과 :", hagsig)

#실행
삭제하기 전 : [1, 2, 3]
clear 결과 : []

 

 

리스트 요소 유무 확인


특정값이 리스트 내부에 있는지 확인하기 위해 in, not in 연산자를 사용한다.

#예시
hagsig=[1, 2, 3]
print("hagsig 값 :", hagsig)
print("")

print("1 in hagsig 결과 :", 1 in hagsig)
print("2 in hagsig 결과 :", 2 in hagsig)
print("3 not in hagsig 결과 :", 3 not in hagsig)
print("4 in hagsig 결과 :", 4 in hagsig)
print("5 not in hagsig 결과 :", 5 not in hagsig)

#실행
hagsig 값 : [1, 2, 3]

1 in hagsig 결과 : True
2 in hagsig 결과 : True
3 not in hagsig 결과 : False
4 in hagsig 결과 : False
5 not in hagsig 결과 : True

 

 

리스트에 수학 함수 활용


다음과 같은 수학함수는 리스트를 매개변수로 넣어 활용할 수 있는 함수들이다.

리스트와 활용 가능한 수학 함수 
함수 설명
min() 리스트 내부 요소에서 최솟값을 찾음
max() 리스트 내부 요소에서 최댓값을 찾음
sum() 리스트 내부 요소들을 모두 더함
#예시
hagsig=[1, 2, 3, 4, 5]
print("hagsig 값 :", hagsig)
print("")

print("min(hagsig) 결과 :", min(hagsig))
print("max(hagsig) 결과 :", max(hagsig))
print("sum(hagsig) 결과 :", sum(hagsig))

#실행
hagsig 값 : [1, 2, 3, 4, 5]

min(hagsig) 결과 : 1
max(hagsig) 결과 : 5
sum(hagsig) 결과 : 15

 

 

리스트 요소 순서 뒤집기


리스트 요소들의 순서를 거꾸로 출력하거나 저장하기위해 reversed() 함수를 사용한다.

#예시1
hagsig=[1, 2, 3, 4, 5]
print("정방향 hagsig :", hagsig)

hagsig_r=list(reversed(hagsig))
print("역방향 hagsig :", hagsig_r)

#실행
정방향 hagsig : [1, 2, 3, 4, 5]
역방향 hagsig : [5, 4, 3, 2, 1]

 

#예시2
hagsig=[1, 2, 3]

for i in hagsig:
    print("정방향 i의 값 :", i)
print("")

for i in reversed(hagsig):
    print("역방향 i의 값 :", i)

#실행
정방향 i의 값 : 1
정방향 i의 값 : 2
정방향 i의 값 : 3

역방향 i의 값 : 3
역방향 i의 값 : 2
역방향 i의 값 : 1

 

위처럼 reversed() 함수를 이용하지 않고 확장 슬라이싱(::-1)을 통해 리스트의 요소를 뒤집을수도 있다.

#예시
hagsig=[1, 2, 3]
print("정방향 학식 :", hagsig)

print("역방향 학식 :", hagsig[::-1])

#실행
정방향 학식 : [1, 2, 3]
역방향 학식 : [3, 2, 1]​

 

 

인덱스와 요소를 동시에 출력하기


인덱스와 해당 인덱스 안에 존재하는 요소를 동시에 출력하고 싶을때 enumerate() 함수를 사용한다.

#예시1
hagsig=["tistory", "blog", "hagsig"]

print("enumerate 결과 :", list(enumerate(hagsig)))

#실행
enumerate 함수 사용 : [(0, 'tistory'), (1, 'blog'), (2, 'hagsig')]

 

#예시2
hagsig=["tistory", "blog", "hagsig"]

for i, value in enumerate(hagsig):
    print("{}번째 요소는 {}입니다.".format(i, value))
    
#실행
0번째 요소는 tistory입니다.
1번째 요소는 blog입니다.
2번째 요소는 hagsig입니다.

 

 

리스트 안에 for, if문 사용하기


요소를 넣어야 하는 칸에 for, if문을 넣어 요소로 지정하는 것을 리스트 내포(list comprehensions)라고 한다. 

#예시1
hagsig=[i for i in range(0, 10, 3)]

print("hagsig 요소 :", hagsig)

#실행
hagsig 요소 : [0, 3, 6, 9]

 

#예시2
hagsig=["tistory", "blog", "hagsig"]
output=[i for i in hagsig if i != "blog"]

print("hagsig 요소 :", hagsig)
print("output 요소 :", output)

#실행
hagsig 요소 : ['tistory', 'blog', 'hagsig']
output 요소 : ['tistory', 'hagsig']

 

#예시3
hagsig=["tistory", "blog", "hagsig"]
output=[i for i in hagsig if i != "blog"]

print("hagsig 요소 :", hagsig)
print("output 요소 :", output)

#실행
hagsig 요소 : ['tistory', 'blog', 'hagsig']
output 요소 : ['tistory', 'hagsig']