Python

[python] for문, if문 한 줄로 코딩하기 (for and if in one line)

슈퍼짱짱 2019. 8. 9. 13:36
반응형

1. for문

- 1차원 list의 각 원소를 한 줄로 출력하기

 

v = list(range(10))
print(v)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

① 기존

 

for i in v:
    print(i)

 

② 한 줄로

 

[i for i in v]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

물론 도 for i in v : print(i) 와 같이 코딩한다면 한 줄로 코딩 할 수 있으나, 코드가 더 길어질 경우 가 훨씬 깔끔하게 짤 수 있으며, 출력의 형태도 다르다.

에서 출력되는 i의 type은 int형이며, 에서 출력되는 type은 list이다.

 

※ 출력

~.join()으로 좀 더 예쁘게 출력할 수 있다.

 

print(" ".join(str(i) for i in v))

0 1 2 3 4 5 6 7 8 9


- 2차원 list의 각 원소를 한 줄로 출력하기

 

v = [list(range(10)),[10,11,12]]
print(v)

[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12]]

 

 

① 기존

 

for i in v:
    for j in i:
        print(j)

 

② 한 줄로

 

[j for i in v for j in i]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

 


2. if문

- one condition

 

① 기존

 

if v<5 :
    print(0)

 

② 한 줄로_방법1

 

v = 3
if v<5 : print(0)

'0'

 

② 한 줄로_방법2

 

v = 3
print(0 if v<5 else 1)

'0'

 

v = 8
print(0 if v<5 else 1)

'1'


- more than one condition

 

① 기존

 

if v<5 :
    print(0)
elif v<10:
    print(1)
else :
    print(2)

 

② 한 줄로

 

v = 3
print(0 if v<5 else 1 if v<10 else 2)

'0'

 

v = 8
print(0 if v<5 else 1 if v<10 else 2)

'1'

 

v = 10
print(0 if v<5 else 1 if v<10 else 2)

'2'


3. for문 + if문

- if condition에 해당하는 값만 출력하기

 

v = list(range(10,20))
print(v)

[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

 

 

① 기존

 

for i in v:
    if i==12:
        print(i)

12

 

 

② 한 줄로

 

[i for i in v if i==12]

[12]


- for문에 해당하는 각각의 원소가 if condition에 해당하는지, 아닌지

 

① 기존

 

for i in v:
    if i==12:
        print(i)
    else :
        print("No")

 

② 한 줄로

 

[i if i==12 else "No" for i in v ]

['No', 'No', 12, 'No', 'No', 'No', 'No', 'No', 'No', 'No']

반응형