numbers = []
for n in range(1, 10+1):
numbers.append(n)
numbersComprehension = [x for x in range(10)]

우리가 변수 x를 가지고 좀 더 다양한 값을 리스트에 넣어주고 싶다면
[ 2*x for x in range(1, 10+1) ]
# >>> [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
리스트 컴프리헨션을 이용해 리스트를 만들 때, 우리는 조건을 걸어줄 수도 있다.
even_numbers = []
for n in range(1, 10+1):
if n % 2 == 0:
even_numbers.append(n)
# 이런식으로 넣을 수도 있지만, for문 뒤에 if문을 붙여주면 더 짧게 줄일 수 있다.
# if문을 여러개 쓰고 싶다면 뒤에 그냥 이어서 써주면 된다.
[x for x in range(10) if x % 2 ==0]
# >>> [2, 4, 6, 8]
리스트 컴프리헨션은 중첩된 for문도 지원한다.
for x in ['쌈밥', '치킨', '피자']:
for y in ['사과', '아이스크림', '커피']:
for z in ['배달 시키기', '가서 먹기']:
print(x, z, y)
# 이런 삼중첩 for문을
[ (x, z, y) for x in ['쌈밥', '치킨', '피자'] for y in ['사과', '아이스크림', '커피'] for z in ['배달 시키기', '가서 먹기']]
# 이런식으로 짧게 나타낼 수 있다.
for문의 범위는 왼쪽부터 가장 위이고 오른쪽으로 갈 수록 아래이다.
리스트 컴프리헨션을 사용했던 것과 같이 딕셔너리도 컴프리헨션을 지원한다.
students = ['철수', '영희', '길동', '순희']
dicts_ = { student: 0 for student in students }
# {'철수': 0, '영희': 0, '길동': 0, '순희': 0}
리스트와 같이 for문 앞에 변수를 둠으로 딕셔너리를 초기화 할 수 있다.
scores = {'철수': 50, '영희': 80, '길동': 90, '순희': 60, '전학생': 100}
scores = { name: score for name, score in scores.items() if name != '전학생'}
print(scores)
딕셔너리 함수가 튜플형태로 키, 값 쌍을 리턴해준다는 사실을 기억하면서 초기화를 해주면 된다.
answer = [k for k, v in alpha.items() if v == max(alpha.values())]