리스트(list)
여러 개의 값을 하나의 변수로 관리하기 위한 기능
리스트 요소 개수를 조사하는 방법 : len() 함수
a = [1,2,3,4,5,6,7]
len(a)
#len(a)는 7
리스트는 데이터 계산을 한번에 실시할 수 있어 매우 편리
points = [88, 76, 67, 43, 79, 80, 91]
sum_v = 0
for i in points:
sum_v+=i
print(i, "점을 더한 합계는 ", sum_v)
ave = sum_v / len(points)
print("평균점은 ", ave, "점")
파이썬에는 리스트에 들어 있는 값의 합계를 한 번에 구할 수 있는 sum()이라는 함수가 마련
for 구문을 사용하지 않아도 리스트의 각각의 요소를 모두 더해서 합계를 구할 수 있음
points = [88, 76, 67, 43, 79, 80, 91]
sum_v = sum(points)
ave = sum_v / len(points)
print("합계점은 ", sum_v, "점")
print("평균점은 ", ave, "점")
리스트에 들어갈 수 있는 값은 수치 뿐만 아니라 문자열도 대입할 수 있음
#이름을 무작위로 표시하는 프로그램 예제
import random
name = ["박성진, 박제형, 강영현, 김원필, 윤도운"]
i = random.randint(0, len(name)-1) #무작위로 수치를 하나 고른다.
print(name[i])
random.randint(n, m) : n부터 m까지의 수치 중에서 무작위로 선택된 값을 구할 수 있음
for구문에서 인덱스 번호를 사용한 반복
for 구문과 리스트를 조합해서 사용한 구문에서는 요소의 값만 구할 수 있지만, enumerate() 함수를 사용하면 요소의 값뿐만 아니라 (인덱스 번호, 요소의 값) 튜플을 구할 수 있음
fruits = ["Apple", "Orange", "Banana"]
for i,v in enumerate(fruits):
print(i, v)
print(list(enumerate(fruits)))
리스트에 요소 추가 : append()
이미 만들어진 리스트에 새로운 값을 추가할 때 사용
append()를 사용하면 데이터를 리스트의 마지막 요소 뒤에 추가 할 수 있음
#리스트에 요소 추가 append()
num = [1, 2, 3]
num.append(4) #append()로 값 추가
num.append(5)
print(num) #결과 : [1, 2, 3, 4, 5]
#국어 시험 점수 목록
points = [80, 40, 23, 14, 29, 58]
#30점 이하의 데이터만을 선택해서 낮은 점수 리스트에 추가
lowscore = [] #빈 리스트
for p in points:
if p < 30:
lowscore.append(p)
print(lowscore) #결과 : [23, 14, 29]
주의) print(b.append(5)) #None이라는 값이 나온다
append 함수는 반환 타입이 없다. 따라서 따로 print(b)해줘야 함
리스트에 요소 추가 : insert() 함수
리스트의 중간에 요소 삽입 가능 (append()는 맨끝에 추가되었음)
문법 : 리스트명.insert(삽입할 위치, 삽입할 요소)
a = [1,2,4,5]
a.insert(2,3)
print(a) #결과 : [1,2,3,4,5]
두 개의 리스트를 결합하는 방법 : +연산자와 extend() 함수
서로 다른 리스트를 결합하려면 +연산자를 사용하거나 extend() 함수 사용
+연산자와 extend() 함수의 차이점
+ 연산자 : 원본 리스트에 어떠한 변화가 없음 -> 비파괴적
extend() 함수 : 원본 리스트에 직접적으로 영향을 줌 -> 파괴적
(+연산자를 이용해서 원본을 파괴하려면 c = c+d 이런식으로 해야 원본이 바뀜.)
주의) print(c+d)는 가능한데 print(c.extend(d)) 는 None나옴
리스트 요소 슬라이스
리스트의 일부분을 구하는 기능을 슬라이스라고 함
- 끝이라고 쓰여있는 부분에는 (리스트의 마지막 인덱스 번호 + 1) 한 값을 지정해야 함
- 0번과 마지막 요소의 인덱스는 생략 가능 ex) a[ : 3] == a[0 : 3]
- 인덱스 값에 음의 값을 지정하면 마지막에서부터 n개의 값을 구할 수 있음
[a:b:step] : a부터 b-1인덱스에 해당하는 요소 중 step번째에 등장하는 데이터 값
#리스트 요소 슬라이스
b = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(b[2:8:2]) #인덱스 2~7까지 중에 2번째 값들
#결과 : [3, 5, 7]
print(b[::3])#처음~끝까지 3번째에 등장하는 데이터 값 출력
#결과 : [1, 4, 7]
리스트 요소 삭제
리스트 요소를 제거하는 방법
- 인덱스로 제거 : del 키워드 , pop()
- 값으로 제거 : remove()
- 모두 제거 : clear()
인덱스로 제거 : del 키워드
리스트의 특정 인덱스에 있는 요소 제거
del 리스트명 [인덱스]
주의) print(del c[2]) #이렇게 하면 error뜬다. invalid syntax
#del키워드
num = [0, 1, 2, 3, 4]
del num[2]
print(num) #결과 : [0, 1, 3, 4]
num = [0, 1, 2, 3, 4]
del num[2:4]
print(num) #결과 : [0, 1, 4]
인덱스로 제거 : pop() 함수
매개 변수를 입력하지 않으면 마지막 요소를 제거
리스트명.pop(인덱스)
주의) print(c.pop(0))
pop은 print에 쓸 수는 있는데, 0번째 요소가 제거된 리스트가 나오는게 아니라 그냥 0번째 요소가 출력됨
#pop() 함수
num = [0, 1, 2, 3, 4]
num.pop(1) #인덱스1에 있는 요소를 삭제
print(num) #결과 : [0, 2, 3, 4]
num = [0, 2, 3, 4]
num.pop() #아무것도 안쓰면 자동으로 마지막 요소가 삭제됨
print(num) #결과 : [0, 2, 3]
값으로 제거 : remove()
리스트 안에 있는 값 x를 삭제 (동일한 값이 여러 개 있다면, 가장 앞에 위치한 값부터 제거)
리스트.remove(x)
주의) print(c.remove(4)) #remove는 print에 쓰지 못함, 반환값이 없기 때문에
#remove
num = [0, 1, 2, 3, 4, 2, 5]
num.remove(2)
print(num) #결과 : [0, 1, 3, 4, 2, 5]
모두 제거 : clear()
리스트의 모든 요소를 삭제
리스트.clear()
주의) print(c.clear()) #None나옴, 반환안됨
#clear
num = [0, 1, 2, 3, 4, 2, 5]
num.clear()
print(num) #결과 : []
'프로그래밍 > Python' 카테고리의 다른 글
[Python] 리스트 뒤집기 (0) | 2024.04.02 |
---|---|
[Python] split()과 split(' ')의 차이 (0) | 2024.03.27 |
[Python] input()과 readline()의 차이점 (0) | 2024.03.25 |
[Python] while문, for문, break, else (0) | 2021.04.03 |