arr = input().split()
sum_val = 0
for i in range(10):
sum_val += int(arr[i])
print(sum_val)
for elem in arr:
print(elem)
#map을 이용하면 리스트에 있는 원소 type을 전부 변환한 이후의 리스트를 반환할 수 있음
arr = list(map(int, input().split()))
print(arr)
>> 1 3
[1, 3]
# 2개의 숫자만 입력받는 경우, tuple 사용 가능
n, m = tuple(map(int, input().split()))
print(n, m)
>> 1 3
1 3
리스트에 대해 slice([])를 활용하면 일부 범위, 조건에 해당하는 원소들을 가져올 수 있습니다.
arr[start:end:step]
start index에서 시작하여 end index 직전까지 step씩 뛰며 전진합니다.
index 0 1 2 3 4
=====================
arr = [1, 2, 3, 4, 5]
print(arr[1:3:1]) # 1번째 index부터 3번째 index 전까지 1씩 증가
print(arr[1:3]) #이렇게 표현해도 동일
print(arr[:3]) #처음부터 받고 싶은 경우
print(arr[3:0:-1]) # 3번째 index부터 0번째 index 전까지 -1씩 감소하면서
print(arr[::-1]) # 전체 원소 뒤집기
arr = list(map(int, input().split()))
reversed_arr = arr[::-1]
for elem in reversed_arr:
print(elem, end=" ")
# 비어있는 리스트
arr = []
혹은
arr = list()
arr = [3, 5]
arr.append(9) #append 괄호에 들어갈 원소 쓰기
print(arr)
>> [3, 5, 9]
arr = [3, 5, 9]
arr.pop()
print(arr)
>> [3, 5]
len() 함수: 해당 리스트에 있는 원소의 개수를 반환해줍니다.>> print(len([1, 3, 5]))
3
arr = [1, 2, 2, 5]
n = len(arr)
sum_val = 0
for i in range(n):
sum_val += arr[i]
print(sum_val)
>> 10
이때 len 함수를 이용하지 않고, 다음과 같이 코드를 작성하여 원소를 바로 꺼내는 식으로도 해결이 가능
arr = [1, 2, 2, 5]
sum_val = 0
for elem in arr:
sum_val += elem
#or
sum_val = sum(arr) #sum 함수 사용
print(sum_val)
>> 10
sum 함수란?
- sum(iterable, start) 형태
- iterable: 리스트나 튜플 등 숫자로 이루어진 객체
- start: 처음에 더해줄 값
- 그러니까, iterable 내의 값을 다 더해주고 start도 더해주는 거
2번째 숫자부터 끝까지의 합을 구하기 위해서는 range를 꼭 사용해야만 할까요?
이런 경우에는, slicing을 활용해볼 수 있습니다.
arr = [1, 2, 2, 5]
sum_val = 0
for elem in arr[1:]:
sum_val += elem
#or
sum_val = sum(arr[1:])
print(sum_val)
>> 9
arr[-1]의 의미는 끝에서부터 첫 번째 원소, arr[-2]의 의미는 끝에서부터 2번째 원소라는 의미를 갖습니다.
index 0 1 2 3
index -4 -3 -2 -1
==================
arr = [1, 2, 3, 5]
따라서 가장 끝에 있는 2개의 원소를 더해 출력하는 코드는 다음과 같이 작성해볼 수 있습니다.
arr = list(map(int, input().split()))
print(arr[-1] + arr[-2])
선언과 동시에 for loop으로부터 나온 원소를 원하는 값으로 변경해줄 수 있습니다
[(append 안에 들어갈 내용) (for loop)]
# 조건문을 포함하는 list comprehension
[(append 안에 들어갈 내용) (for loop) <조건문>]
# 리스트 arr의 각 원소들을 전부 2배씩 해주는 코드
arr = [1, 2, 3, 5]
new_arr = [elem * 2 for elem in arr]
# 홀수의 제곱수 배열
list_ = [i ** 2 for i in range(1, 10) if i % 2 == 1]
list_ = [(i + j) for i in range(3) for j in range(3)]
해당 코드의 결과는 다음과 같습니다.
[0, 1, 2, 1, 2, 3, 2, 3, 4]
for 문을 사용해 표현하면 다음과 같습니다.
list_ = []
for i in range(3):
for j in range(3):
list_.append(i + j)
arr = [0, 1, 1]
# 3번째 항부터 10번째 항까지 추가 - 배열이 이미 있어도 append로 그냥 넣을 수 있음
for i in range(3, 11):
arr.append(arr[-1] + arr[-2])
# 10번째 항 출력
print(arr[10])
>> 55
# or - p: 전항, pp: 전전항
pp, p = 1, 1
for _ in range(3, 11):
pp, p = p, pp + p
print(p)
>> 55
전부 0으로 초기화된 크기가 7인 배열이 필요합니다. (1부터 6까지를 각각 index로 사용한다고 했을 때)
# 숫자 별 출현 횟수 1 2 3 4 5 6
count_arr = [0, 0, 0, 0, 0, 0, 0]
# 혹은 다음과 같이도 정의가 가능합니다.
count_arr = [0] * 7
# list comprehension을 이용할수도 있습니다.
count_arr = [0 for _ in range(7)]
10번 던져 나온 숫자 목록을 arr라 한다면, count_arr의 해당 숫자 index에 1씩 증가시키는 식으로 진행해볼 수 있습니다.
count_arr = [0] * 7
# 개수 세기
arr = list(map(int, input().split()))
for elem in arr:
count_arr[elem] += 1
# 개수 출력
for i in range(1, 7):
cnt = count_arr[i]
print(f"숫자 {i} - {cnt}번")
enumerate() 함수enumerate(순서가 있는 객체, start=0)word = ['A', 'P', 'P', 'L', 'E']
# 해당 문자를 찾지 못했다면 -1
idx = -1
# 문자 탐색
for i, char in enumerate(word):
if char == 'L':
idx = i
# 문자가 존재하지 않는 경우
if idx == -1:
print("not exist")
else:
print(idx)
>> 3
in, not in 이라는 키워드word = ['A', 'P', 'P', 'L', 'E']
if 'L' in word:
print('L is in list')
if 'L' not in word:
print('L is not in list')
>> L is in list
.index() 함수word = ['A', 'P', 'P', 'L', 'E']
if 'K' in word:
print(word.index('K'))
count()라는 함수를 사용해볼 수도 있습니다.word = ['A', 'P', 'P', 'L', 'E']
cnt = word.count('P')
print(cnt)
>> 2
max(arr)arr = [-1, -5, -2, -5, -3, -9]
# 첫번째 원소를 max로 설정하고 두번째 값부터 비교하면서 알아내기
max_val = arr[0]
for elem in arr[1:]:
if elem > max_val:
max_val = elem
print(max_val)
min(arr)