Days26. List Comprehension
ex) 리스트의 값들을 1씩 더한 리스트를 만들때
numbers = [1,2,3]
#1. 지금까지 방법 예
new_numbers = []
for num in numbers:
add_1 = num + 1
new_numbers.append(add_1)
#2. List Comprehension
#new_list = [ new_item for item in list ]
new_numbers = [ num+1 for num in numbers ]
---------------------------------------------------------
print(new_numbers)
[2, 3, 4]
ex)
name = "Kio"
for i in name:
print(i)
--------------------
K
i
o
new_list = [i for i in name]
print(new_list)
-------------------------------
['K', 'i', 'o']
ex) range(1,6)으로 값이 두배가 되는 숫자 리스트 만들기
double = [ num * 2 for num in range(1,6)]
print(double)
--------------------------------------------------------------
[2, 4, 6, 8, 10]
#3. Conditional List Comprehension
#new_list = [ new_item for item in list if test ]
ex) 4자 이하의 이름을 리스트로 만들기
name = ["Alex", "Benjamin", "Carl", "David", "Kio", "Freebee"]
short_name = [ n for n in name if len(n) < 5 ]
print(short_name)
--------------------------------------------------------
['Alex', 'Carl', 'Kio']
long_name = [ n.upper() for n in name if len(n) >= 5]
print(long_name)
----------------------------------------------------------------
['BENJAMIN', 'DAVID', 'FREEBEE']
* 연습문제
file1.txt 와 file2.txt에서 공통적으로 포함된 '숫자'를 List Comprehension으로 나타내 보아라
with open("file1.txt") as data1:
file1 = data1.readlines()
# number1=[]
# for data in file1:
# number1.append(int(data))
with open("file2.txt") as data2:
file2 = data2.readlines()
# number2=[]
# for data in file2:
# number2.append(int(data))
result = [ int(n1) for n1 in file1 if n1 in file2 ]
print(file1)
print(file2)
print("---------------------------------------------------")
print(result)
[output]
['3\n', '6\n', '5\n', '8\n', '33\n', '12\n', '7\n', '4\n', '72\n', '2\n', '42\n', '13\n']
['3\n', '6\n', '13\n', '5\n', '7\n', '89\n', '12\n', '3\n', '33\n', '34\n', '1\n', '344\n', '42\n']
---------------------------------------------------
[3, 6, 5, 33, 12, 7, 42, 13]