본문 바로가기

프로그램언어/파이썬

3강 리스트

리스트

리스트란?

순서가 있는 객체의 집합이다.

List[ ] 대괄호로 묶어주고 각각의 원소는 , 구분합니다.

삽입, 삭제, 수정이 가능합니다.

 

1. 리스트 만들기

>>> [1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
>>> a = [1, 2, 3, 4, 5]
>>> a
[1, 2, 3, 4, 5]
>>> type(a)
<class 'list'>

2. 리스트의 각각의 원소를 인덱스로 출력 (인덱스는 0부터 시작)

>>> a = [1, 2, 3, 4, 5] 
>>> a[0]
1
>>> a[2]
3

리스트의 인덱스는 0부터 시작합니다. 그래서 a[0]는 1이 출력되고 a[1]은 2가 출력됩니다.

>>> a = [1, 2, 3, 4, 5] 
>>> a[-1]
5
>>> a[-2]
4
>>> a[-3]
3

a[-1]에서 -1은 리스트의 마지막 요소를 의미합니다. 그래서 a[-1]는 5가 출력되고 a[-2]은 4가 출력됩니다.



3. 리스트의 개수 출력(len()함수 사용)

>>> a = [1, 2, 3, 4, 5] 
>>> len(a)
5

4. 리스트를 사용하는 합계구하기

a = [0, 0, 0, 0, 0]
sum = 0
a[0] = 10
a[1] = 20
a[2] = 30
a[3] = 40
a[4] = 50

sum = a[0] + a[1] + a[2] + a[3] + a[4]
print('합계 : ' ,  sum)

 

숫자를 입력받아 합계구하기

a = [0, 0, 0, 0, 0]
sum = 0
a[0] = int(input('숫자1 : '))
a[1] = int(input('숫자2 : '))
a[2] = int(input('숫자3 : '))
a[3] = int(input('숫자4 : '))
a[4] = int(input('숫자5 : '))

sum = a[0] + a[1] + a[2] + a[3] + a[4]
print('합계 : ' ,  sum)

 

5. 빈 리스트를 생성하여 항목을 추가하고 출력해보자. ( 함수 : append() )

a = []
a.append(10)
a.append(20)
a.append(30)
a.append(40)
a.append(50)
print(a)

 

반복문을 통해 10번 반복하면서 a리스트에 i값을 추가하고 리스트의 총 개수를 출력해 보자 

a = []
for i in range(0, 10) :
    a.append(i)
    print('a[%d] = %d, ' %(i, i), end=" ")

print("\n총개수 : ",len(a))

 

빈 리스트를 5개의 데이터를 0값으로 추가하고 리스트의 0번째부터 값을 입력하여 합계를 출력해 보자.

sum = 0
a = []
for i in range(0, 5) :
    a.append(0)
    
for i in range(0, 5) :
    a[i] = int(input(str(i+1) + "번째 숫자 : "))
    sum = sum + a[i]

print("합계 : ",  sum)

 

리스트의 생성과 초기화

리스트는 대괄호 [ ]로 생성하고 다양하게 생성하는 코드이다.

a = []                           # 빈 리스트 생성
a = [10, 20, 30]              # 정수 데이터 리스트
a = ['파이썬', '컴퓨터', '강의']             # 문자열 데이터 리스트
a = [10, 20, '파이썬']       # 다양한 데이터형 리스트

 

리스트 값에 접근하는 다양한 방법

a = [10, 20, 30, 40, 50]

print(a[0:3])   # 0번째부터 2번째 인덱스까지
print(a[3:4])   # 3반째부터 3반째 인덱스까지
print(a[2:])    # 2번째 부터 끝까지
print(a[:3])    # 0번째 부터 2번째 인덱스까지

a = [10, 20, 30, 40, 50]
b = [60, 70, 80]
print(a + b)      # a리스트와 b리스트 출력
print(b * 3)       # b리스트 데이터를 3반 반복하여 출력
print(a[::2])       # 앞에서 부터 2칸씩 건터뛰면서 추출
print(a[::3])       # 앞에서 부터 3칸씩 건터뛰면서 추출
print(a[::-2])     # 뒤에서 부터 2칸씩 건터뛰면서 추출
print(a[::-1])     # 뒤에서 부터 1칸씩 건터뛰면서 추출

 

리스트 값을 변경

a[1]는 20인데 "a[1] = 100"을 통해 리스트 1번째 인덱스에 값 100을 대입하여 변경하였습니다.

 

 

연속된 범위에 값을 변경할 수 있습니다. 위 그림처럼 a[1:3]은 리스트의 1번째부터 다음 (3-1)번째까지 변경하라는 의미입니다. 그래서 60, 70, 80이 나오고 40과 50이 이어서 출력되는 것을 알 수 있습니다.

 

참고로 아래 그림과 같이 출력해 보겠습니다. (잘 사용하지 않는 방법입니다.)

 

 

리스트의 항목을 삭제해 보자. ( 함수 : del() )

 

여러 개의 항목을 삭제하기

리스트 자체를 삭제하는 방법

리스트에 []나 None를 입력하여 리스트의 항목 전부를 삭제할 수 있습니다.

 

 

리스트 함수

함수 설명 사용 예
append() 리스트끝에 항목 추가 리스트명.append(값)
del() 리스트에서 지정한 항목을 삭제 del(리스트명[인덱스위치])
len() 리스트의 전체 항목의 개수를 반환 len(리스트명)
index() 지정한 값을 찾아 해당 위치를 반환 리스트명.index(찾을값)
insert() 지정된 위치에 값을 삽입 리스트명.insert(위치, 값)
remove() 지정한 값을 삭제, 값이 여러개 이면 첫번째 값만 삭제 리스트명.remove(지울값)
sort() 리스트의 항목을 정렬 리스트명.sort()
reverse() 리스트의 항목을 역순으로 만듬 리스트명.reverse()
count() 리스트에서 해당 값의 개수를 반환 리스트명.count(값)
copy() 리스트의 내용을 새로운 리스트에 복사 새리스트 = 리스트명.copy()
clear() 리스트의 내용을 모두 지운다. 리스트명.clear()
pop() 리스트끝에 항목을 삭제 리스트명.pop()
extend() 리스트 뒤에 리스트를 추가, 리스트의 + 연산과 같은 기능 리스트명.extend(리스트명)
sorted() 리스트 항목을 정렬하고 새로운 리스트에 대입한다. 새리스트 = sorted(리스트명)

 

append() 함수 사용하기  list = [20, 40, 30, 50, 10]

# 6070을 추가

list.append(60)

list.append(70)

print('추가된 리스트 : ', end='')

print(list); print()

출력 결과
추가된 리스트 : [20, 40, 30, 50, 10, 60, 70]

 

del() 함수 사용하기  list = [20, 40, 30, 50, 10, 60, 70]

# 6070을 삭제

del(list[5])

del(list[5])

print('삭제된 리스트 : ', end='')

print(list); print()

출력 결과
삭제된 리스트 : [20, 40, 30, 50, 10]

 

len() 함수 사용하기   list =  [20, 40, 30, 50, 10]

# 리스트 항목 갯수 출력

print('리스트 길이 : ', end='')

print(len(list)); print()

출력 결과

리스트 길이 : 5

 

index() 함수 사용하기   list =  [20, 40, 30, 50, 10]

# 리스트에서 값 찾기

print('리스트에서 50의 위치 : ', end='')

print(list.index(50)); print()

출력 결과

리스트에서 50의 위치 : 3

 

insert() 함수 사용하기   list =  [20, 40, 30, 50, 10]

# 리스트에서 위치를 지정하여 삽입하기

list.insert(1, 100)

print('리스트 두번째에 100 삽입하기 : ', end='')

print(list); print()

출력 결과

리스트 두번째에 100 삽입하기 : [20, 100, 40, 30, 50, 10]

 

remove() 함수 사용하기   list =  [20, 100, 40, 30, 50, 10]

# 리스트에서 100값을 삭제하기

list.remove(100)

print('리스트에서 값100을 삭제 : ', end='')

print(list); print()

출력 결과

리스트에서 값100을 삭제 : [20, 40, 30, 50, 10]

 

sort() 함수 사용하기   list =  [20, 40, 30, 50, 10]

# 리스트 정렬하기 (오름차순)

list.sort()

print('리스트 오름차순 정렬 : ', end='')

print(list)

 

# 리스트 정렬하기 (내림차순)

list.sort(reverse=True)

print('리스트 내림차순 정렬 : ', end='')

print(list); print()

출력 결과

리스트 오름차순 정렬 : [10, 20, 30, 40, 50]

리스트 내림차순 정렬 : [50, 40, 30, 20, 10]

 

reverse() 함수 사용하기    list = [50, 40, 30, 20, 10]

# 리스트 역순으로 만들기

list.reverse()

print('리스트 역순으로 만들기 : ', end='')

print(list); print()

출력 결과

리스트 역순으로 만들기 : [10, 20, 30, 40, 50]

 

count() 함수 사용하기    list = [10, 20, 30, 40, 50]

# 리스트에서 값20의 개수를 반환하기(우선 값20을 하나추가하고 실행)

list.append(20)

list.count(20)

print('리스트 항목 : ', end='')

print(list)

print('리스트에서 값 20의 갯수는 : ', end='')

print(list.count(20)); print()

출력 결과

리스트 항목 : [10, 20, 30, 40, 50, 20]

리스트에서 값 20의 갯수는 : 2

 

copy() 함수 사용하기     list =  [10, 20, 30, 40, 50, 20]

# newlist를 만들고 복사하기

newlist = []

newlist = list.copy()

print('리스트 출력 : ', end='')

print(list)

print('복사된 newlist 출력 : ', end='')

print(newlist); print()

출력 결과

리스트 출력 : [10, 20, 30, 40, 50, 20]

복사된 newlist 출력 : [10, 20, 30, 40, 50, 20]

 

clear() 함수 사용하기    newlist = [10, 20, 30, 40, 50, 20]

# newlist 항목 삭제하기

newlist.clear()

print('newlist 항목삭제 : ', end='')

print(newlist); print()

출력 결과

newlist 항목삭제 : []

 

pop() 함수 사용하기    list =  [10, 20, 30, 40, 50, 20]

# list의 끝항목 삭제하기

print('이전 리스트 항목 : ', end='')

print(list)

list.pop()

print('현재 리스트 항목 : ', end='')

print(list); print()

출력 결과

이전 리스트 항목 : [10, 20, 30, 40, 50, 20]

현재 리스트 항목 : [10, 20, 30, 40, 50]

 

extend() 함수 사용하기        list =  [10, 20, 30, 40, 50]

# 새로운 리스트 추가하기

newlist = [100, 200, 300, 400]

print('이전 리스트 항목 : ', end='')

print(list)

list.extend(newlist)

print('추가된 리스트 : ', end='')

print(list); print()

출력 결과

이전 리스트 항목 : [10, 20, 30, 40, 50]

추가된 리스트 : [10, 20, 30, 40, 50, 100, 200, 300, 400]

 

sorted() 함수 사용하기

# 리스트를 정렬하고 새로운 리스트에 대입

oldlist = [50, 10, 40, 20, 30]

newlist = []

print('이전 리스트 항목 : ', end='')

print(oldlist)

newlist = sorted(oldlist)

print('새로운 리스트 : ', end='')

print(newlist); print()

출력 결과

이전 리스트 항목 : [50, 10, 40, 20, 30]

새로운 리스트 : [10, 20, 30, 40, 50]

 

 

2차원 리스트

2차원 리스트는 1차원 리스트를 여러 개를 연결한 것으로 첨자를 2개 사용하고 행과 열로 이루어진 리스트를 말한다.

>>> a = [[10, 20], [30, 40], [50, 60]]
>>> a
[[10, 20], [30, 40], [50, 60]]
>>> a[0][0]
10
>>> a[0][1]
20
>>> a[1][0]
30
>>> a[1][1]
40
>>> a[2][0]
50
>>> a[2][1]
60

 

가로의 크기가 불규칙한 톱니형 리스트도 있습니다.

a = [ [10, 20],
        [30, 40, 50],
        [60],
        [70, 80, 90],
        [100] ]

list = [ [10, 20], [30, 40, 50], [60], [70, 80, 90], [100] ]

for i in range(0, 5) :

    print(list[i])

실행 결과

[10, 20]

[30, 40, 50]

[60]

[70, 80, 90]

[100]

 

 

리스트에 리스트를 추가하여 2차원 리스트를 만들어보자.

list = []

list1 = []

num = 1

 

for i in range(0, 3) :

    for j in range(0, 3) :

        list.append(num)

        num = num + 1

    list1.append(list)

    list = []

 

for i in range(0, 3) :

    for j in range(0, 3) :

        print('%2d' %list1[i][j], end=" ")

    print()

실행 결과

 1  2  3

 4  5  6

 7  8  9

 

range() 함수

range(10)은 0부터 9까지 숫자를 생성합니다. ( 0 1 2 3 4 5 6 7 8 9 )

range(3, 7)은 3부터 6까지 숫자를 생성합니다. ( 3 4 5 6 )

range(1, 10, 2)은 1부터 2씩 증가하면서 9까지 숫자를 생성합니다. ( 1 3 5 7 9 )

 

 

range() 함수를 이용하여 리스트를 만들어보자.

range(5)를 입력하여 0부터 4까지 숫자가 들어간 리스트를 생성해 보겠습니다.  range(실행횟수)

>>> a = list(range(5))
>>> a
0 1 2 3 4

 

range(3, 7)를 입력하여 3부터 6까지 숫자가 들어간 리스트를 생성해 보겠습니다.  range(시작, 끝)

>>> a = list(range(3, 6))
>>> a
3 4 5

 

range(1, 10, 2)를 입력하여 1부터 2씩 증가하면서 9까지 숫자가 들어간 리스트를 생성해 보겠습니다.  range(시작, 끝, 증감식)

>>> a = list(range(1, 10, 2))
>>> a
1 3 5 7 9

 

 

i, sum, num_list = 0, 0, []

num_list = input().split()
while True:
    n = int(num_list[i])
    sum += n
    if n >= 100:
        break
    i = i + 1

print(sum)
print("%.1f" %(sum/(i+1)))

 

n = 0

while True:
    n = int(input())

    if n == -1:
        break
    
    if n % 3 == 0:
        print('%d' %(n / 3))

 

num_list, cnt, n, i = [], 0, 0, 0

num_list = input().split()

while True:
    n = int(num_list[i])

    if n == 0:
        break
    
    if n % 3 != 0 and n % 5 != 0:
        cnt = cnt + 1
    i = i + 1

print(cnt)

'프로그램언어 > 파이썬' 카테고리의 다른 글

5강 딕셔너리  (0) 2020.07.15
4강 튜플  (0) 2020.07.14
2강 숫자계산과 연산자  (0) 2020.06.17
1.강 Hello world 출력  (1) 2020.06.17
거북이 글자쓰기(모듈버전)  (0) 2020.06.04