Post

파이썬 특징적인 문법

입출력

1
2
3
4
5
6
7
8
9
10
a = input()
a = input("prompt")
print("a" "b" "c")         # abc
print("a" + "b" + "c")     # abc
print("a","b","c")         # ('a', 'b', 'c')

x = "Hello"
y = "World!"
print(x,y)                 # Hello World!
print(x+y)                 # HelloWorld!
  • input으로 받은 것은 모두 문자열로 처리한다.
  • print 안에 “ “ “ “ 로 이뤄지면 “ “ + “ “ 와 같은 결과이다.
  • print 안에 ,가 들어가면 튜플로 보여진다.


파일 입출력

1
2
3
4
5
6
7
f = open("file.txt",'w')   # w : 쓰기 r : 읽기 a : 이어쓰기
f.close()                  # 이거를 명시하지 않아도 자동으로 처리되기는 한다.
f.write('something')       # 파일에 'something'을 쓰기.
line = f.readline()        # 파일에서 한 줄씩 읽어오기.
if not line: break         # 이 형태로 EOF을 감지할 수 있다.
lines = f.readlines()      # 모든 line들을 가져와서 리스트 형태로 반환한다.
data = f.read()            # 모든 내용을 하나의 문자열로 return
1
2
with open("file.txt", "w") as f:
  f.write('something')
  • open block 안에서 나가는 즉시 자동으로 file close를 시켜준다.
1
2
3
args = sys.argv[1:]
for i in args:
   print(i)
  • argument로 들어오는 값들을 처리할 수 있다. int main(args[])와 같은 이치.


Unpacking

1
2
3
4
5
6
7
8
9
10
11
12
def point(x, y):
  print(x,y)

foo_list = [3,4]
foo_tuple = (5,6)
foo_dict = {'x':1, 'y':2}

point(*foo_list)            # 3 4
point(*foo_tuple)           # 5 6
point(**foo_dict)           # 1 2

print(*foo_dict)            # x y
  • function의 argument로 사용하기 위해서 쓰는 문법입니다.
  • list, tuple의 경우 *, dictionary의 경우 **을 붙여 사용합니다.


Enumerate

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
vowels = ['a','e','i','o','u']
for i, letter in enumerate(vowels):
  print(i, letter)

'''
0 a
1 e
2 i
3 o
4 u
'''

for i in enumerate(vowels):
  print(i)

'''
(0, 'a')
(1, 'e')
(2, 'i')
(3, 'o')
(4, 'u')
'''
  • index와 item을 함께 쓰고 싶을 때 사용하는 방식이다.


비교 연산자 체인

1
2
3
4
5
i = 3

ans = 1 < i < 10   # True
ans = 10 > i <= 9  # True
ans = 3 == i       # True
  • 기존 c언어에서는 되지 않았던 직관적인 비교연산자 체인 사용 가능합니다.


Infinites

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
p_infinity = float('Inf')

if 999999999999999999999999999999999999999 > p_infinity:
  print("The number is greater than Infinity!")
else:
  print("Infinity is greatest")

n_infinity = float('-Inf')
if -9999999999999999999999999999999999999999999999999999999999999999999 < n_infinity:
  print("The number is lesser than Negative Infinity!")
else:
  print("Negative Inifinity is least")

'''
Infinity is greatest
Negative Inifinity is least
'''
  • 특별한 라이브러리 사용 없이 무한대를 사용할 수 있습니다.


List Comprehension

1
2
3
4
5
6
a = []
for x in range(0,10):
  a.append(x)
print(a)                                   # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for ten for i in 
print([x * x + 1 for x in a if x%2 == 0])  # [1, 5, 17, 37, 65]
  • 수학에서 쓰이는 조건문을 list, for, if를 결합하여 표현할 수 있습니다.


Slicing

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

print(a[1:2])                       # [2]
print(a[:-1])                       # [1, 2, 3, 4]
print(a[1:])                        # [2, 3, 4, 5]
print(a[:])                         # [1, 2, 3, 4, 5]
print(a[::-1])                      # [5, 4, 3, 2, 1]
print(a[::2])                       # [1, 3, 5]
print(a[::-2])                      # [5, 3, 1]
  • [start : end : step] 으로 이루어져있고 string, tuple로도 slicing 가능하다.
This post is licensed under CC BY 4.0 by the author.