본문 바로가기

Python

8. 반복문 - 리스트와 반복문

리스트 : 여러가지 자료를 저장할 수 있는 자료. 숫자, 문자, 수식 등이 개별적인 자료라면, 리스트는 자료들을 모아서 사용할 수 있게 해주는 형태의 자료. 대괄호 [ ] 내부에 여러 종류의 자료를 넣어 선언함.

 

리스트 선언하고 요소에 접근하기

리스트를 생성하는 방법은 대괄호 [ ]에 자료를 쉼표로 구분해서 입력함.

[ ] 내부에 넣는 자료를 요소(element)라고 부름.

프롬프트에 리스트를 입력하면 리스트 내부의 자료를 모두 출력한다.

>>> [2,5,"파이썬",True]
[2, 5, '파이썬', True]

 

요소를 각각 사용하려면 리스트 이름 바로 뒤에 대괄호 [ ] 를 입력하고, 자료의 위치를 나타내는 숫자를 입력한다.

파이썬은 0부터 숫자를 셈.

>>> list_a=[1,5,48,"파이썬",False]
>>> list_a[1]
5

>>> list_a[0:4]
[1, 5, 48, '파이썬']

 

리스트 기호인 대괄호[ ] 안에 들어간 숫자를 인덱스(index)라고 부른다.

[0:4]는 0번째 글자부터 4번째가 아닌 그 앞 숫자, 3까지 선택함.

 

리스트의 요소는 변경이 가능함.

>>> list_a[1]="변경"
>>> list_a
[1, '변경', 48, '파이썬', False]

 

※ 리스트의 다른 사용법

① 대괄호 안에 음수를 넣어 뒤에서부터 요소를 선택할 수 있다.

>>> list_a
[1, '변경', 48, '파이썬', False]

>>> list_a[-1]
False
>>> list_a[-3]
48

 

② 리스트 접근 연산자를 이중으로 사용할 수 있다.

>>> list_a[3][1]
'이'

list_a[3] 으로 "파이썬"을 불러오고, 다시 1번째를 가져와 "이"를 출력함.

 

③ 리스트 안에 리스트를 사용할 수 있다.

>>> list_b=[[1,2,3],[4,5,6],[7,8,9]]
>>> list_b[1]
[4, 5, 6]
>>> list_b[2][0]
7

 

리스트 연산자 : 연결(+), 반복(*), len()

#리스트를 선언합니다.
list_a=[1,2,3]
list_b=[4,5,6]

#출력합니다.
print("#리스트")
print("list_a=",list_a)
print("list_b=",list_b)
print()

#기본 연산자
print("# 리스트 기본 연산자")
print("list_a+list_b=",list_a+list_b)
print("list_a*3=",list_a*3)
print()

#함수
print("# 길이 구하기")
print("len(list_a)=",len(list_a))

=>

#리스트
list_a= [1, 2, 3]
list_b= [4, 5, 6]

# 리스트 기본 연산자
list_a+list_b= [1, 2, 3, 4, 5, 6]
list_a*3= [1, 2, 3, 1, 2, 3, 1, 2, 3]

# 길이 구하기
len(list_a)= 3

 

리스트에 요소 추가하기 : append, insert

append() : 리스트 뒤에 요소를 추가

리스트명.append(요소)

 

insert() : 리스트의 중간에 요소를 추가

리스트명.insert(위치, 요소)

 

extend() : 한 번에 여러 요소를 추가. append 함수 여러번 실행한 효과

 

#리스트 선언
list_a=[1,2,3]

#리스트 뒤에 요소 추가하기
print("#리스트 뒤에 요소 추가하기")
list_a.append(4)
list_a.append(5)
print(list_a)
print()

#리스트 중간에 요소 추가하기
print("#리스트 중간에 요소 추가하기")
list_a.insert(0,10)
print(list_a)

=>

#리스트 뒤에 요소 추가하기
[1, 2, 3, 4, 5]

#리스트 중간에 요소 추가하기
[10, 1, 2, 3, 4, 5]

 

리스트에 요소 제거하기

인덱스로 제거하기 : del, pop

위치를 기반으로 요소를 제거하는 방법

 

del 키워드 : 리스트의 특정 인덱스에 있는 요소를 제거

del 리스트명[인덱스] 

 

pop() : 제거할 위치에 있는 요소를 제거, 매개변수를 입력하지 않으면 마지막 요소를 제거

리스트명.pop(인덱스)

 

#리스트 연결 연산자와 요소 추가의 차이
list_a=[0,1,2,3,4,5]
print("#리스트의 요소 하나 제거하기")

#제거 방법[1] - del
del list_a[1]
print("del list_a[1]:",list_a)

#제거 방법[2] - pop()
list_a.pop(2)
print("list_a.pop(2):",list_a)

=>

#리스트의 요소 하나 제거하기
del list_a[1]: [0, 2, 3, 4, 5]
list_a.pop(2): [0, 2, 4, 5]

 

※ pop() 함수의 매개변수에 아무 것도 입력하지 않으면 자동으로 -1이 들어가는 것으로 취급해서 마지막 요소를 제거한다.

※ del 키워드를 사용하면 범위를 지정해 리스트의 요소를 한꺼번에 제거할 수 있다.

 ex)

del list_a[2:5]

del list_a[:3]

del list_a[3:]

 

값으로 제거하기 : remove

remove() : 값을 지정해서 제거하는 것

리스트.remove(값)

 

>>> list_b=[1,2,1,2]
>>> list_b.remove(2)
>>> list_b
[1, 1, 2]

 

※ 리스트 내부에 여러 개 있어도 가장 먼저 발견되는 하나만 제거한다.

 

모두 제거하기 : clear

clear() : 리스트 내부의 요소를 모두 제거

리스트.clear()

 

>>> list_b.clear()
>>> list_b
[]

 

리스트 내부에 있는지 확인하기 : in/not in 연산자

값 in 리스트

리스트 내부에 값이 있으면 True, 없으면 False를 출력함.

 

for 반복문

for 반복자 in 반복할 수 있는 것:

    코드

 

반복할 수 있는 것에는 문자열, 리스트, 딕셔너리, 범위 등이 있다.

#리스트를 선언합니다.
array=[241,456,32,76,989]

#리스트에 반복문을 적용합니다.
for element in array:
#출력합니다.
print(element)

=>

241
456
32
76
989

 

numbers=[273,103,5,32,65,9,72,800,99]
for number in numbers:
if number%2==1:
print(number, " 는 홀수입니다.")
else:
print(number," 는 짝수입니다.")

=>

273  는 홀수입니다.
103  는 홀수입니다.
5  는 홀수입니다.
32  는 짝수입니다.
65  는 홀수입니다.
9  는 홀수입니다.
72  는 짝수입니다.
800  는 짝수입니다.
99  는 홀수입니다.

 

numbers=[273,103,5,32,65,9,72,800,99]
for number in numbers:
print(number,"는 ",len(str(number)),"자릿수 입니다.")

=>

273 는  3 자릿수 입니다.
103 는  3 자릿수 입니다.
5 는  1 자릿수 입니다.
32 는  2 자릿수 입니다.
65 는  2 자릿수 입니다.
9 는  1 자릿수 입니다.
72 는  2 자릿수 입니다.
800 는  3 자릿수 입니다.
99 는  2 자릿수 입니다.

 

list_of_list=[[1,2,3,],[4,5,6,7],[8,9],]
for number in list_of_list:
for item in number:
print(item)

=>

1
2
3
4
5
6
7
8
9

 

 
numbers=[1,2,3,4,5,6,7,8,9]
output=[[],[],[]]

for number in numbers:
output[(number+2)%3].append(number)

print(output)

=>

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

 

※ 문제 풀이 : 먼저 1을 추출해서 number에 들어가면, 3%3은 나머지가 0이므로 output[0].append(1) 이 됨

따라서 0번째 자리에 1이 입력됨. 다음 2를 추출해서 대입하면 4%3의 나머지는 1이므로 output[1].append(2)

1번째 자리에 2가 입력됨. 3으로 나눈 나머지는 0,1,2 중에 하나이므로 반복해서 0번째, 1번째, 2번째 자리에 입력함.

'Python' 카테고리의 다른 글

7. 조건문- if~else와 elif 구문  (0) 2022.03.26
6. 조건문 - 불리언, if 조건문  (0) 2022.03.20
5. 숫자와 문자열의 다양한 기능  (0) 2022.03.15
4. 변수와 입력  (0) 2022.03.13
3. 숫자  (0) 2022.03.12