리스트 (list)

2022. 10. 1. 00:16파이썬(Python)

반응형

1. 리스트 (List)

● 리스트를 사용하여 입력한 숫자들의 합을 구하기

- 공백을 두고 숫자를 입력받기  =>  input().split()

 

input().split() 참고

 

입력

1. input() 함수 사용하기 - input()이라는 함수를 사용해 한 줄 단위로 입력받을 수 있다. - type은 문자열(str). a=input() print(f'My name is {a}') 결과 >> Tom My name is Tom ex) 숫자를 입력하여 1을 더할..

kdh9797-devwiki.tistory.com

 

- 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