1. 리스트 (List)
● 리스트를 사용하여 입력한 숫자들의 합을 구하기
- 공백을 두고 숫자를 입력받기 => input().split()
- type은 string
arr=input().split()
print(arr)
결과
>> 1 2 3 4 5
['1', '2', '3', '4', '5']
- 입력한 수들의 합은 리스트의 각 원소들을 int형으로 변환하여 모두 더함
- for loop를 사용
※ list에 있는 원소를 순차적으로 탐색
- 기존 for문의 range() 부분을 list 변수로 사용
arr=input().split()
for i in arr:
print(i)
결과
>> 1 2 3 4 5
1
2
3
4
5
- 입력한 수들의 합은 다음과 같이 구할 수 있음
arr=input().split()
sum_val=0
for i in arr:
sum_val+=int(i)
print(sum_val)
결과
>> 1 2 3 4 5
15
2. 입력 리스트 - map으로 변환
● 숫자를 공백을 사이에 두고 입력 - 기존 방법
- input().split() => list로 변환 후 원소의 type이 문자열이기 때문에 일일이 int()로 type 변환
● map 사용 => 리스트에 있는 원소 type을 전부 변환 후 리스트를 반환
arr=list(map(int,input().split()))
print(arr)
결과
>> 1 2 3 4 5
[1, 2, 3, 4, 5]
- 각 변수에 숫자를 할당할 수 있음.
a,b,c=list(map(int,input().split()))
print(b)
print(c)
print(a)
결과
>> 1 2 3
2
3
1
3. Slicing
- 리스트에서 일부 범위, 조건에 해당하는 원소들을 가져올 수 있음
● 기본적인 형태 (for loop와 유사함)
- arr [start:end:step]
- start index에서 end index 직전까지 step씩 뛰며 수행
arr=[0,1,2,3,4,5]
print(arr[1:4:2])
# 1번 index에서 3번 index까지 2씩 증가 출력
# arr[1], arr[3]
결과
[1,3]
- step이 1인 경우 생략 가능
arr=[0,1,2,3,4,5]
print(arr[1:4])
결과
[1,2,3]
- 첫 번째 index (0번 index)부터 slicing을 적용하고 싶다면, start는 비워놔도 된다.
arr=[0,1,2,3,4,5]
print(arr[:4])
결과
[0, 1, 2, 3]
- 마지막 index까지 slicing을 적용하고 싶다면 end는 비워놔도 된다.
arr=[0,1,2,3,4,5]
print(arr[4:])
결과
[4, 5]
- 특정 구간을 뒤집힌 형태로 만들고 싶다면, step에 -1을 넣어준다.
arr=[0,1,2,3,4,5]
print(arr[4:1:-1])
# 4번 index에서 2번 index까지 1씩 감소 출력
# arr[4], arr[3], arr[2]
결과
[4, 3, 2]
- 전체 원소를 뒤집고 싶다면 start, end를 비우고 step에 -1만 적는다.
arr=[0,1,2,3,4,5]
print(arr[::-1])
결과
[5, 4, 3, 2, 1, 0]
3. 리스트 활용법
- 비어있는 리스트 만들기
arr=[]
arr=list()
- append : 리스트의 맨 끝에 원소를 추가
arr=[1,2,3]
arr.append(4)
print(arr)
결과
[1, 2, 3, 4]
- pop : 리스트의 맨 끝에 원소를 삭제
arr=[1,2,3]
arr.pop()
print(arr)
결과
[1, 2]
- len : 리스트의 길이를 구함. 리스트에 있는 원소의 개수를 반환
arr=[1,2,3]
print(len(arr))
결과
3
- sum : 리스트 안의 원소의 합
arr=[1,2,3,4,5]
print(sum(arr))
결과
15
Q) 학점계산기
- 과목 수 n을 입력
- n개 과목의 학점을 입력. 평균학점을 출력 (소수 첫째 자리 반올림)
- 평균이 4.0 이상이면 A, 3.0 이상이면 B, 3.0 미만이면 C 출력
n=int(input())
grade=list(map(float,input().split())) # 실수형(float)으로 저장
avg=sum(grade)/len(grade)
print(f'{avg:.1f}')
if avg>=4.0:
print('A')
elif avg>=3.0:
print('B')
else:
print('C')
결과
>> 4
>> 3.5 3.0 3.0 4.5
3.5
B
Q) 홀수, 짝수의 개수와 합
- 숫자들을 입력.
- 홀수의 개수와 합, 짝수의 개수와 합 출력
arr=list(map(int,input().split()))
odd,even=[],[]
for i in arr:
if i%2==1:
odd.append(i)
else:
even.append(i)
print(f'홀수 개수 : {len(odd)}, 홀수 합 : {sum(odd)}')
print(f'짝수 개수 : {len(even)}, 짝수 합 : {sum(even)}')
결과
>> 1 2 4 5 7 8 9 10 0 3
홀수 개수 : 5, 홀수 합 : 25
짝수 개수 : 5, 짝수 합 : 24
Q) 배수를 거꾸로 출력
- 배수 n을 입력
- 숫자들을 입력
- n의 배수를 거꾸로 출력
● 문제 접근
- n_mul 리스트를 생성 => 입력한 수들 중 n의 배수를 삽입
- n_mul[::-1]로 reverse 한 다음 원소들을 출력
n=int(input())
arr=list(map(int,input().split()))
n_mul=[]
for i in arr:
if i%n==0:
n_mul.append(i)
for i in n_mul[::-1]:
print(i,end=' ')
결과
>> 3
>> 2 3 5 6 8 9 10 12 23 45 56 78 89
78 45 12 9 6 3
'파이썬(Python)' 카테고리의 다른 글
리스트 만들기 (0) | 2022.10.14 |
---|---|
리스트와 인덱스 (0) | 2022.10.10 |
다중 반복문5 (+문자열) (0) | 2022.09.30 |
다중 반복문4 (0) | 2022.09.29 |
다중 반복문3 (0) | 2022.09.25 |