-
https://www.acmicpc.net/ 10818번 N = int(input()) a = list(map(int,input().split())) print(min(a), max(a))
1. 자료를 리스트 형태로 저장한다
2. max(), min()을 사용하여 최댓값과 최솟값을 도출한다
2562번 num_list = [] for x in range(9): num_list.append(int(input())) print(max(num_list)) print(num_list.index(max(num_list))+1)
1. 변수 num_list에 입력값을 받을 빈 리스트 생성
2. range(9) 범위를 설정하여 for문을 작성한다.
- 1회 반복할 때마다 num_list에 int(input())으로 입력값을 append한다.
3. max()를 통해 num_list의 최댓값을 출력한다.
4. index(x) 함수는 리스트에 x 값이 있으면 x의 위치 값을 돌려준다.
5. 인덱스는 기본 0부터 시작하나, 문제에서는 1부터 시작한 인덱스를 요구하기 때문에 1을 더해준다.
append( ), extend( ), insert( ) 비교
1. append( )
array.append(x) 형태로 사용한다.
append는 덧붙인다는 뜻으로 괄호( ) 안에 값을 입력하면 새로운 요소를 array 맨 끝에 객체로 추가한다. 요소를 추가할 때는 객체로 추가하게 되는데, 입력한 값이 리스트와 같은 반복 가능한 iterable 자료형이더라도 객체로 저장한다. 사용 예시는 아래와 같다.
>>> nums = [1, 2, 3] >>> nums.append(4) [1, 2, 3, 4] >>> nums.append([5, 6]) [1, 2, 3, 4, [5, 6]] # 리스트가 하나의 객체로 추가되었음 # 5, 6의 요소로 추가되는 것이 아니라 [5, 6]이라는 리스트 형태가 그대로 요소로 추가
2. extend( )array.extend(iterable) 형태로 사용한다. 입력한 iterable 자료형의 항목 각각을 array의 끝에 하나씩 추가한다. append와 동일하게 요소를 array의 끝에 추가하지만 append와 다른 점은 괄호( ) 안에는 iterable 자료형만 올 수 있다는 것이다. iterable 자료형이 아닌 경우 TypeError가 발생한다.
>>> nums = [1, 2, 3] >>> nums.extend([4, 5]) [1, 2, 3, 4, 5] #리스트로 주어진 [4, 5]의 요소가 각각 추가 되었음 >>> a = [10] >>> nums.extend(a) [1, 2, 3, 4, 5, 10]
3. insert( )array.insert(i, x) 형태로 사용한다. array의 원하는 위치 i 앞에 추가할 값 x를 삽입할 수 있다. i는 위치를 나타내는 인덱스를 숫자를 입력한다. 음수를 입력하면 배열의 끝을 기준으로 처리된다. 추가할 값 x는 객체로 추가되며 iterable 자료형이더라도 객체로 저장된다. array의 끝에 추가하고 싶은 경우 array의 요소 개수가 적으면 하나하나 셀 수도 있지만 요소가 많은 경우 len( ) 함수를 이용할 수 있다
>>> nums = [1, 2, 3] >>> nums.insert(0, [10, 20]) # 0번째(맨앞에) 추가 [[10, 20], 1, 2, 3] >>> nums.insert(-1, 100) # 끝에서 1번째 전에 추가 >>> print(nums) [[10, 20], 1, 2, 100, 3] # 리스트 맨 끝에 저장되지 않음 >>> nums = [1, 2, 3] >>> nums.insert(len(nums), 100) [1, 2, 3, 100]
5597번 students = [i for i in range(1,31)] for _ in range(28): num = int(input()) students.remove(num) #소거 print(min(students)) print(max(students))
1. 교실엔 학생이 30명이 있으니 student 리스트에 저장한다.
2. 과제를 제출한 28명의 학생을 입력받아 num에 저장한다.
3. remove()함수를 이용하여 student에 있는 수에서 num에 해당하는 수를 삭제한다.
4. 남은 2개의 값중에서 min값과 max값을 출력한다.
함수가 반환하는 일부 값에 관심이 없을 때 변수 이름을 _ 로 적어준다
보통 underscore() 로 변수명을 해줄 땐 딱히 그 변수값을 사용하지 않는다
루프가 실행되는 횟수에 관심이 없으며 전체적으로 특정 횟수만큼 실행되어야 함을 의미 한다
파이썬 array의 요소 삭제
del
del은 함수가 아니라 예약어이다. 그렇기 때문에 함수와 같이 사용할 수 없다.
array의 메서드인 함수는 변수 이름 뒤에 점(.)을 붙이고서 사용한다. 그러나 예약어는 예약어 뒤에 한 칸을 띄고서 사용한다. 파이썬의 예약어로는 if, or, and 등이 있다.
del의 사용방법은 del 뒤에 한 칸을 띄고서 'del array [인덱스]' 형태로 사용한다.
대괄호[ ] 에는 요소의 위치에 해당하는 인덱스를 입력해서 요소의 위치를 지정해서 삭제를 할 수 있다. 인덱스를 사용할 때는 본래의 인덱스 성질 중에 범위 연산자를 그대로 사용할 수 있다. 범위 연산자 슬라이싱(:)을 이용하면 해당 범위에 위치한 여러 개의 요소를 삭제할 수 있다.
int_list = [1, 2, 3, 4, 5, 6, 7] str_list = ['가','나','다','라','마'] del int_list[0] # 한개의 요소를 삭제 print(int_list) [2, 3, 4, 5, 6, 7] del str_list[3:] # 여러개의 요소를 삭제 print(str_list) ['가', '나', '다']
remove( )
remove 함수는 값으로 array의 요소를 삭제한다.
사용방법은 array.remove(x) 형태로 사용한다. 괄호( ) 안에 삭제하고자 하는 값을 입력한다. 단, array 안에서 삭제하고자 하는 값이 여러 개가 있다 하더라도 첫 번째 값에 대해서만 삭제한다.
remove 함수를 사용하여 모든 값을 삭제할 때는 for문을 이용할 수도 있다.
반복문 안에서 리스트의 요소를 하나씩 꺼내서 remove 함수로 숫자 3을 삭제해나간다. 마지막에 numbers 변수를 print 함수로 출력하면 3이 없는 것을 확인할 수 있다.
numbers = [1, 2, 2, 3, 3, 3] # 숫자 3이 3개인 리스트 numbers.remove(3) print(numbers) [1, 2, 2, 3, 3] # 숫자 3이 2개로 줄어들었음 numbers = [1, 2, 2, 3, 3, 3] for _ in numbers : numbers.remove(3) print(numbers) [1, 2, 2] # 숫자 3이 없음
리스트에 1부터 100까지 변수를 추가
# 일반적인 방법 numbers = [ ] for n in range(1, 100+1): numbers.append(n) # 리스트 컴프리헨션을 사용 numbers = [ x for x in range(1, 101)] # 1부터 100까지 자연수 중 '홀수'만 한 라인으로 출력 하세요. q = [x for x in range(1,101) if x % 2 != 0] print(q)
맨 앞 x에 반복문을 통해 들어온 x를 append 한다고 생각할 수 있다.
https://wikidocs.net/22805 3052번 arr = [] for i in range(10): n = int(input()) arr.append(n % 42) arr = set(arr) print(len(arr))
1. 빈 배열을 만들어 준다.
2. n을 입력받은 뒤, append를 이용하여 배열의 마지막에 원소를 추가해준다.
3. 입력받은 값을 42로 나눈 나머지들이 arr에 저장된다.
4. 그 arr를 set으로 집합 자료형으로 만들어준다.
- (set함수는 간단하게 말하면, 중복을 제거하기 위한 필터역할을 해준다.)
6. arr의 len, 길이를 출력해준다.
# len 예시 a = "Life is too short" len(a) 17 # set 예시 s1 = set([1,2,3]) s1 {1, 2, 3} s2 = set("Hello") s2 {'e', 'H', 'l', 'o'}
set 자료형을 만들었는데 생성된 자료형에는 l 문자가 하나 빠져 있고 순서도 뒤죽박죽이다.
set은 중복을 허용하지 않으며, 순서가 없다(Unordered).
set은 자료형의 중복을 제거하기 위한 필터로 종종 사용된다
리스트나 튜플은 순서가 있기(ordered) 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있지만 set 자료형은 순서가 없기(unordered) 때문에 인덱싱으로 값을 얻을 수 없다. 이는 딕셔너리와 비슷하다
set 자료형에 저장된 값을 인덱싱으로 접근하려면 다음과 같이 리스트나 튜플로 변환한후 해야 한다.
1546번 n = int(input()) # 과목 수 test_list = list(map(int, input().split())) max_score = max(test_list) new_list = [] for score in test_list : new_list.append(score/max_score *100) # 새로운 점수 생성 test_avg = sum(new_list)/n print(test_avg)
1. 과목수로 입력받을 수를 n에 선언한다
2. 시험 점수는 list 자료형으로 변수에 선언한다
3. 새로운 점수를 구하기 위해서는 입력받은 점수 중 가장 큰 점수를 test_list의 원소중 가장 큰 값을 max 함수로 찾는다
4. new_list라는 빈 리스트를 만든다.
5. for문을 이용해서 입력받은 시험 점수를 하나씩 꺼내면서 (입력받은 점수/최고 점수*100) 식으로 새로운 점수를 만든다. 6. 새로 만든 점수는 append 함수로 리스트에 추가한다.
7. for문이 끝나면 평균을 구한다.
8. 새로 만든 점수로 이루어진 리스트의 요소를 sum함수로 모두 더하고서 과목수로 나눈다
python에서 평균 구하기
1. 파이썬 평균 구하기 for 반복문
# 하나하나 더하고 더한 결과를 갯수 만큼 나눠주는 전형적인 방법 arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = 0 for val in arr: result += val # 하나하나 더하기 # 평균 구하기 print(f"average : {result / len(arr)}")
2. 파이썬 sum 을 이용한 평균 구하기
# sum ([]) 함수를 사용해 해당 숫자들의 합을 한번에 구한다 arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 합계 구하기 result = sum(arr) # 평균 구하기 print(f"average : {result / len(arr)}")
3. 파이썬 numpy 모듈로 평균 구하기
import numpy arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 평균 구하기 average = numpy.mean(arr) # 출력 print(f"average : {average}")
숫자를 다루는 모듈중에서 numpy 라는 모듈이 평균을 구하는 mean 함수를 제공해 주고 있다
이 함수는 2번 방법인 sum 을 구해서 len(리스트) 해서 리스트의 숫자로 나누는 그런 작업도 필요없다
numpy.mean(리스트)로 간단하게 평균을 구할 수 있다pip install numpy 명령어를 이용해서numpy 를 설치하고 numpy 를 import 해서 mean 함수를 사용하면 된다
4.파이썬 평균 구하기 statiscics 라이브러리 이용
import statistics arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] arr2 = [100, 90, 80, 10, 20, 30, 60, 70, 50, 40] # 평균 구하기 result1 = statistics.mean(arr1) result2 = statistics.mean(arr2) # 출력 print(f"average1 : {result1}") print(f"average2 : {result2}")
파이썬에서 제공해주는 statiscics 라이브러리를 사용하느방법이 있다
이 statistics 라이브러리는 파이썬 3.4 버전 부터 사용할 수 있으며 여러 수학 관련 함수를 제공해준다
우리가 사용할 평균을 구하는 함수는 mean 이라는 함수 이며
파이썬에서 제공해주는것이기 때문에 따로 pip install 할 필요 없이 바로 import 하면 됩니다.
https://docs.python.org/ko/3/library/statistics.html#statistics.mean
statistics — Mathematical statistics functions
Source code: Lib/statistics.py This module provides functions for calculating mathematical statistics of numeric ( Real-valued) data. The module is not intended to be a competitor to third-party li...
docs.python.org