반응형
파이썬에서 리스트 컴프리헨션을 사용하여 자료를 생성하는 방법을 알아보았고 관련 문제를 보았다. 이제 문제에 관한 풀이를 보며 지난 시간에 배운 내용을 복습해 보자.
문제
주어진 섭씨 온도(Celsius)의 리스트를 화씨(Fahrenheit) 온도의 리스트로 변경
$화씨온도 = 섭씨온도 \times {9}/{5} + 32$
예상 결과[32.0, 50.0, 77.0, 86.9]
1부터
celsius = [0, 10, 25, 30.5]
[x * 9/5 + 32 for x in celsius]
[32.0, 50.0, 77.0, 86.9]
10까지의 정수 중에서 짝수의 제곱만 리스트로 만들기
반응형
예상 결과[4, 16, 36, 64, 100]
In [31]:
[x ** 2 for x in range(1, 11) if x % 2 == 0]
Out[31]:
[4, 16, 36, 64, 100]
주어진 문자열의 리스트에서 소문자 a가 들어 있는 단어들만 모두 대문자로 바꿔서 리스트를 만들기
예상 결과['BANANA', 'CRASH', 'MATHEMATICS']
In [32]:
my_list = ['hello', 'Apple', 'banana', 'Cherry', 'crash', 'mathematics']
[s.upper() for s in my_list if 'a' in s]
Out[32]:
['BANANA', 'CRASH', 'MATHEMATICS']
전치 행렬
주어진 중첩 리스트를 [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
로 변경
자릿수
# numpy를 사용하여 전치행렬을 이용할 수 있으나 이 경우 자료형이 달라잠.
import numpy as np
matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
]
matrix = np.array(matrix)
print([element for element in matrix.T])
[array([1, 5, 9]), array([ 2, 6, 10]), array([ 3, 7, 11]), array([ 4, 8, 12])]
matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
]
[[element[i] for element in matrix] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
# 위의 결과와 비교하여 알아둘 것
matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
]
[element[i] for element in matrix for i in range(4)]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
합치기
주어진 자연수의 모든 자릿수의 숫자들을 계속 합쳐서 마지막으로 숫자가 하나만 남을 때까지 반복
예전에 이름의 획순으로 숫자를 세어 하던 놀이와 비슷함.
예를 들어서 입력받은 숫자가 1357 이라면
1357
16
7
이 됨. 이때 1 + 3 + 5 + 7 = 16이고
1 + 6 = 7
힌트
- 숫자를 문자열로 바꾼다. : 1356 -> "1357"
- 리스트 컴프리헨션을 이용해서 문자열을 정수의 리스트로 바꾼다. : [1, 3, 5, 7]
- 각 원소들을 더하고 다시 문자열로 바꾼다. : "16"
In [36]:
num = 1357
[int(num) for num in str(num)]
sum([int(num) for num in str(num)])
Out[36]:
16
In [37]:
num = 1357
while len(str(num)) > 1:
print(num)
num = sum([int(num) for num in str(num)])
else:
print(num)
1357
16
7
숫자에 천 단위로 컴마 넣기
숫자를 입력받아서 천 단위로 컴마가 들어간 문자열로 바꾸기.
입력 | 출력 |
---|---|
12 | "12" |
1234 | "1,234" |
1234567 | "1,234,567" |
힌트join()
은 문자열의 리스트를 합칠 때 사이사이에 원하는 문자를 넣어줌.
In [38]:
my_list = ["1", "234", "567"]
"/".join(my_list)
Out[38]:
'1/234/567'
힌트
- 입력받은 숫자를 문자열로 바꾸고 뒤집는다: 12345 -> "54321"
- 리스트 컴프리헨션을 이용해서 3자리씩 잘라진 문자열의 리스트로 변경: ["543", "21"]
join()
을 이용해서 사이에 컴마를 넣고 합친다.: "543,21"- 다시 뒤집는다.: "12,345"
In [40]:
input_number = 1234567
str_input_number = str(input_number)[::-1]
str_input_number
Out[40]:
'7654321'
In [41]:
[str_input_number[i] for i in range(0, 7, 2)]
Out[41]:
['7', '5', '3', '1']
In [42]:
input_number = 1234567
str_input_number = str(input_number)[::-1]
my_list = [str_input_number[i : i + 3] for i in range(0, 7, 3)]
Out[42]:
['765', '432', '1']
In [43]:
input_number = 1234567
str_input_number = str(input_number)[::-1]
my_list = [str_input_number[i : i + 3] for i in range(0, 7, 3)]
",".join(my_list)
Out[43]:
'765,432,1'
In [44]:
input_number = 1234567
str_input_number = str(input_number)[::-1]
my_list = [str_input_number[i : i + 3] for i in range(0, 7, 3)]
",".join(my_list)[::-1]
Out[44]:
'1,234,567'
반응형
'수학과 코딩' 카테고리의 다른 글
python list, set, dict, tuple comprehensions (0) | 2022.08.09 |
---|---|
파이썬 랜덤(random) 사용법 정리(randrange, randint, random.choice 등) (0) | 2022.08.06 |
python 난수(random, range, int, choice)등 정리 및 문제 (0) | 2022.08.06 |
윤년찾기(leap year) 파이썬(python) 날짜와 시간(date and time) (0) | 2022.08.04 |
Python 평균(Mean), 회문(Palindrome)검사, 플로이드 삼각형 (0) | 2022.08.04 |
댓글