이 포스팅은 혼자 공부하는 파이썬을 바탕으로 작성한 포스팅입니다.
[파이썬] 리스트와 반복문
I) 리스트
우리가 알고 있는 사전적 의미는 '목록' 이며, 파이썬에서 리스트의 의미는 여러가지 자료를 저장할 수 있는 자료입니다.리스트는 대괄호[] 내부에 여러 종류의 자료를 넣어 선언합니다.
array = [123, 213, "문자열", True ]
print(array)
[123, 213, "문자열", True ]
II) 리스트 선언하고 요소에 접근하기
파이썬에서 리스트를 생성하는 방법은 대괄호[]에 자료를 쉼표로 구분해서 입력합니다.
대괄호[] 내부에 넣는 자료를 요소(element)라고 부릅니다.
[요소, 요소, 요소, ...]
각각의 요소는 배열과 같은 형태로 저장되어 인덱스를 통해 접근할 수 있다.
array = [123, 213, "문자열", True ]
array[0]
123
array[1:3]
[213, "문자열"]
리스트[n,m] 은 n 부터 m-1 까지 접근입니다.
리스트의 특정 요소는 변경할 수도 있습니다. ( 특정 요소에 접근하여 할당 )
array = [123, 213, "문자열", True ]
array[0]
123
array[1:3]
[213, "문자열"]
array[1] = "변경"
array = [123, "변경", "문자열", True ]
III) 리스트의 추가적인 기능
i) 대괄호 안에 음수를 넣어 뒤에서부터 요소를 선택할 수 있습니다.
ii) 리스트 접근 연산자를 다음과 같이 이중으로 사용할 수 있습니다.
iii) 리스트 안에 리스트를 사용할 수도 있습니다.
IV) 리스트 연산자: 연결(+), 반복(*), len()
list_a = [1, 2, 3]
list_b = [4, 5, 6]
# 리스트 기본 연산자
print(list_a + list_b)
print(list_a * 3)
# 리스트 길이 구하기
len(list_a) = 3
len()은 딥러닝에서 많이 사용됩니다.
V) 리스트에 요소 추가하기: append, insert, extend
append() 는 리스트 뒤에 요소를 추가합니다. (insert() 보다 자주 사용합니다.)
리스트명.append(요소)
insert() 는 리스트의 중간에 요소를 추가합니다.
리스트명.insert(위치, 요소)
extend()는 한번에 여러 요소를 추가합니다.
extend() 함수는 매개변수로 리스트를 입력하는데, 원래의 리스트 뒤에 새로운 리스트의 요소를 모두 추가해 줍니다.
아래의 경우 extend() 함수는 append() 함수를 세 번 반복 실행한 효과를 가져옵니다.
list_a = [1, 2, 3]
list_a.extend([4, 5, 6])
print(list_a)
[1, 2, 3, 4, 5, 6]
+) 리스트 연결 연산자는 본래 리스트 값에 변화가 없는 비파괴적 처리이지만, append(), insert(), extend() 의 경우 본래 리스트 값에 영향을 미치는 파괴적 처리입니다.
VI) 리스트에 요소 제거하기
리스트에 요소를 제거하는 방법은 크게 두가지로 나뉩니다.
i) 인덱스로 제거하기 del, pop
인덱스로 제거한다는 것은 요소의 위치 기반으로 요소를 제거하는 것입니다.
del 키워드는 다음과 같은 구문을 사용하여, 리스트의 특정 인덱스에 있는 요소를 제거합니다.
del 리스트[인덱스]
pop 키워드는 다음과 같은 구문을 사용하여, 매개변수를 입력하지 않으면 마지막 요소를 제거합니다.
리스트명.pop(인덱스)
list_a = [0, 1, 2, 3, 4, 5]
# del
del list_a[1]
print(list_a)
[0, 2, 3, 4, 5]
# pop()
list_a.pop(2)
[0, 2, 4, 5]
list_b = [0, 1, 2, 3, 4, 5, 6]
del list_b[3:6]
print(list_b)
[0, 1, 2, 6]
# del list_b[:6]
# del list_b[3:] 도 사용 가능하다
ii) 값으로 제거하기 remove
remove() 함수는 리스트 내에 특정 값을 지정해서 제거하는 것 입니다.
리스트.remove(값)
remove() 함수로 지정한 특정 값이 리스트 내부에 여러개가 존재하더라도 가장 먼저 발견되는 하나만 제거합니다.
반복문을 조합해서 모두 제거할 수 있습니다.
+) 모두 제거하기 clear, []
내부에 있는 모든 것을 제거할 때 clear을 사용합니다.
VII) 리스트 내부에 있는지 확인하기 in/ not in 연산자
값 in 리스트
값 not in 리스트
list_a = [1, 2, 3, 4, 5]
1 in list_a
True
2 not in list_a
False
VIII) for 반복문
반복문을 통해 컴퓨터에 반복을 지시할 수 있습니다.
for i in range(1000):
print("안녕하세요")
이 경우 "안녕하세요" 가 1000번 출력됩니다.
range()는 범위 자료형 입니다. 즉, 리스트의 값을 갖고 있는 객체 입니다.
a = range(100)
print(a)
range(0, 100)
b = list(range(100))
print(b)
[0, 1, 2, 3, ... 100]
IX) for 반복문 (리스트와 함께 사용하기)
for 반복자 in 반복할 수 있는 것:
코드
반복할 수 있는 것에는 문자열, 리스트, 딕셔너리, 범위 등이 있습니다.
X) 퀴즈
사용자로부터 7개 이하의 입력을 받아 다음과 같이 출력되는 계산기 코드를 작성하세요.
1. 사칙연산의 우선순위는 없다.
2. 숫자와 사칙연산 기호는 번갈아 순서대로 나오며, 그 이외의 문자는 고려하지 않는다.
3. 숫자가 소수점 이하 값이 존재할 경우에만 소수점 둘째자리까지 출력한다.
<예시 답안>
print("계산기 시작")
a_list = []
result = 0.0
for j in range(7):
#a = list(input(">"))
a = input(">")
if a == '':
break
a_list.append(a)
for i in range(len(a_list)):
if i == 1:
if a_list[i] == "+":
result = float(a_list[i - 1]) + float(a_list[i + 1])
elif a_list[i] == "-":
result = float(a_list[i - 1]) - float(a_list[i + 1])
elif a_list[i] == "*":
result = float(a_list[i - 1]) * float(a_list[i + 1])
elif a_list[i] == "/":
result = float(a_list[i - 1]) / float(a_list[i + 1])
else:
if a_list[i] == "+":
result = result + float(a_list[i + 1])
elif a_list[i] == "-":
result = result - float(a_list[i + 1])
elif a_list[i] == "*":
result = result * float(a_list[i + 1])
elif a_list[i] == "/":
result = result / float(a_list[i + 1])
if result % 1 == 0:
print(print("계산 결과는 {} 입니다.".format(int(result))))
else:
print("계산 결과는 {:.2f} 입니다.".format(result))
*유의사항
- 공부 중인 인공지능공학과 대학생이 정리해서 남긴 정리입니다.
- 정확하지 않거나, 틀린 점이 있다면 댓글로 알려주시면 감사하겠습니다.
'AI Developer > Python' 카테고리의 다른 글
[파이썬] input.split() 활용 (0) | 2022.12.29 |
---|---|
[파이썬] map 함수 (0) | 2022.12.29 |
[파이썬] if~else와 elif 구문 (0) | 2022.03.23 |
[파이썬] 불 자료형과 if 조건문 (0) | 2022.03.23 |
[파이썬] 숫자와 문자열의 다양한 기능 (0) | 2022.03.23 |
댓글