7.1 곱하기
Python에는 요소의 수를 늘릴 수 있는 편리한 구문이 있어. 이를 위해 간단한 곱셈 연산자가 사용돼.
문자열 생성
문자열에도 적용할 수 있어:
print("엄마" * 5) # 결과: 엄마엄마엄마엄마엄마
또는, 예를 들어, 빠르게 구분자 문자열을 출력할 수 있어:
print("-" * 40) # 결과: ----------------------------------------
리스트 생성
리스트의 요소 수를 늘릴 수도 있어:
print(["apple"] * 5) # 결과: ['apple', 'apple', 'apple', 'apple', 'apple']
이 연산자는 더 실용적인 용도가 있어. 예를 들어, 0으로 채워진 10개의 요소로 구성된 리스트를 만들고 싶다면:
alist = [0] * 10
print(alist) # 결과: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
심지어 2D 배열도 만들 수 있어. 예를 들어, 0으로 채워진 20x10 배열을 만들고 싶다면. 이 또한 간단해:
alist = [[0] * 10] * 20
print(alist) # 결과: [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ...]
아주 편리하지 않아?
7.2 List Comprehension
Python에는 "List Comprehension"이라는 유용한 도구가 있어 — 이는 리스트를 생성하기 위한 편리하고 간결한 방법이야. 이 구문 도구는 iterable 객체의 모든 요소에 표현식을 적용하여 새로운 리스트를 생성하는 것을 가능하게 해.
설명하는 것보다 보여주는 게 더 쉬울 거야. 이 구문 도구는 이렇게 생겼어:
[표현식 for 변수 in 시퀀스]
여기서:
-
변수— 특정 변수의 식별자, -
시퀀스— 해당 변수가 취하는 값의 시퀀스 (리스트, 문자열 또는range함수로 얻은 객체일 수 있어), -
표현식— 생성기에 사용된 변수에 의존하는, 리스트 요소를 채울 표현식.
중요! 모든 표현식은 대괄호 안에 있어야 해.
다음은 생성기를 사용하는 몇 가지 예들이야:
n개의 0으로 구성된 리스트를 생성하려면, 생성기를 사용해도 돼:
alist = [0 for i in range(100)]
정수 제곱으로 채워진 리스트를 생성하려면 이렇게 해:
n = 5
alist = [i ** 2 for i in range(n)]
1부터 n까지의 정수로 채워진 리스트 생성:
n = 10
alist = [i + 1 for i in range(n)]
그리고 이렇게 해서 1부터 9까지의 임의의 숫자로 채워진 리스트를 얻을 수 있어 (random 모듈의 randrange() 함수를 사용해):
from random import randrange
n = 10
alist = [randrange(1, 10) for i in range(n)]
7.3 List Comprehension 내의 루프
List Comprehension은 리스트 생성외에도 사용할 수 있어. 기본적으로, 이것은 for 루프를 기록하는 간결한 방법일 뿐이야.
예를 들어, 이를 사용해서 리스트의 일부 값을 단순히 출력할 수도 있어:
alist = ["apple", "banana", "cherry"]
[print(x) for x in alist]
또는, 심지어는 키보드로부터 값을 입력받을 수도 있어:
a = [input() for i in range(int(input()))]
이 예제에서 리스트는 표준 입력에서 읽은 문자열로 구성될 거야: 먼저 리스트 요소의 수를 입력해야 해 (이 값이 range 함수의 인자로 사용될 거야), 그리고 그 다음에 지정된 수의 문자열을 입력해야 해.
익숙한 방식으로 보면 이 코드는 이렇게 보여:
n = int(input())
a = []
for i in range(n):
x = input()
a.append(x)
사실, List Comprehension의 가능성은 꽤 많아:
조건을 사용할 수 있어:
표현식에 조건을 포함하면 요소를 필터링할 수 있어. 예를 들어, 짝수만으로 구성된 리스트를 생성할 수 있어:
[x for x in range(10) if x % 2 == 0]
중첩 루프:
생성기는 중첩 루프를 사용하는 것도 가능하게 해, 예를 들어 다차원 배열을 생성하기 위해:
[(x, y) for x in range(3) for y in range(3)]
GO TO FULL VERSION