>>> abs(3)
3
>>> abs(-3)
3
>>> abs(-1.2)
1.2
>>> all([1, 2, 3])
True
>>> all([1, 2, 3, 0])
False
0 = False
>>> any([1, 2, 3, 0])
True
>>> any([0, ""])
False
>>> chr(97)
'a'
>>> chr(48)
'0'
>>> dir([1, 2, 3])
['append', 'count', 'extend', 'index', 'insert', 'pop',...]
>>> dir({'1':'a'})
['clear', 'copy', 'get', 'has_key', 'items', 'keys',...]
>>> divmod(7, 3)
(2, 1)
>>> divmod(1.3, 0.2)
(6.0, 0.099999999999999978)
>>> fori, name inenumerate(['body', 'foo', 'bar']):
... print(i, name)
...
0 body
1 foo
2 bar
for문처럼 반복되는 구간에서 객체가 현재 어느 위치에 있는지 알려주는 인덱스 값이 필요할때 enumerate 함수를 사용하면 매우 유용하다.
>>> eval('1+2')
3
>>> eval("'hi' + 'a'")
'hia'
>>> eval('divmod(4, 3)')
(1, 1)
보통 eval은 입력받은 문자열로 파이썬 함수나 클래스를 동적으로 실행하고 싶은 경우에 사용된다.
#positive.py
defpositive(l):
result = []
fori inl:
ifi > 0:
result.append(i)
returnresult
print(positive([1,-3,2,0,-5,6]))
결과값: [1, 2, 6]
#filter1.py
defpositive(x):
returnx > 0
print(list(filter(positive, [1, -3, 2, 0, -5, 6])))
결과값: [1, 2, 6]
>>> print(list(filter(lambdax: x > 0, [1, -3, 2, 0, -5, 6])))
--- 완벽하게 이해 못했음---
>>> hex(234)
'0xea'
>>> hex(3)
'0x3'
>>> a = 3
>>> id(3)
135072304
>>> id(a)
135072304
>>> b = a
>>> id(b)
135072304
같은 객체를 가리키고 있으니 모두 같은 고유주소를 갖는다
def가 있는데 왜 lambda라는 것이 나오게 되었을까? 이유는 간단하다. lambda는 def 보다 간결하게 사용할 수 있기 때문이다. 또한 lambda는 def를 사용할 수 없는 곳에도 사용할 수 있다. 다음 예제에서 리스트 내에 lambda가 들어간 경우를 살펴보자.
>>> myList = [lambdaa,b:a+b, lambdaa,b:a*b]
>>> myList
[at 0x811eb2c>, at 0x811eb64>]
>>> len("python")
6
>>> len([1,2,3])
3
>>> len((1, 'a'))
2
>>> list("python")
['p', 'y', 't', 'h', 'o', 'n']
>>> list((1,2,3))
[1, 2, 3]
# two_times.py
deftwo_times(numberList):
result = [ ]
fornumber innumberList:
result.append(number*2)
returnresult
result = two_times([1, 2, 3, 4])
print(result)
two_times 함수는 리스트 요소를 입력받아 각 요소에 2를 곱한 결과값을 돌려준다. 실행 결과는 다음과 같다.
> 결과값: [2, 4, 6, 8]
위의 예제는 map 함수를 이용하면 다음처럼 바꿀 수 있다.
>>> deftwo_times(x): returnx*2
...
>>> list(map(two_times, [1, 2, 3, 4]))
[2, 4, 6, 8]
이제 앞 예제를 해석해 보자. 먼저 리스트의 첫 번째 요소인 1이 two_times 함수의 입력값으로 들어가고, 1 * 2의 과정을 거쳐서 2가 된다. 다음으로 리스트의 두 번째 요소인 2가 2 * 2의 과정을 거쳐 4가 된다. 따라서 결과값 리스트는 이제 [2, 4]가 된다. 총 4개의 요소값이 모두 수행되면 최종적으로 [2, 4, 6, 8]이 리턴된다. 이것이 map 함수가 하는 일이다.
(※ 위 예에서 map의 결과를 리스트로 보여 주기 위해 list 함수를 이용하여 출력하였다. 파이썬 2.7은 map의 결과가 리스트이므로 위 예에서 list 함수를 이용하여 리스트로 변환하지 않아도 된다.)
앞의 예는 lambda를 사용하면 다음처럼 간략하게 만들 수 있다.
>>> list(map(lambdaa: a*2, [1, 2, 3, 4]))
[2, 4, 6, 8]
map 함수 예를 하나 더 살펴보자.
# map_test.py
defplus_one(x):
returnx+1
print(list(map(plus_one, [1, 2, 3, 4, 5])))
> 결과값: [2, 3, 4, 5, 6]
위 예는 map과 plus_one 함수를 이용하여 리스트의 각 요소값을 1씩 증가시키는 예제이다.
--- 완벽하게 이해 못했음---
>>> max([1, 2, 3])
3
>>> max("python")
'y'
>>> oct(34)
'0o42'
>>> oct(12345)
'0o30071'
mode설명
w 쓰기 모드로 파일 열기
r 읽기 모드로 파일 열기
a 추가 모드로 파일 열기
b 바이너리 모드로 파일 열기
>>> f = open("binary_file", "rb")
>>> fread = open("read_mode.txt", 'r')
>>> ord('a')
97
>>> ord('0')
48
>>> pow(2, 4)
16
>>> pow(3, 3)
27
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list(range(5, 10))
[5, 6, 7, 8, 9]
>>> list(range(1, 10, 2))
[1, 3, 5, 7, 9]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> sorted([3, 1, 2])
[1, 2, 3]
>>> sorted(['a', 'c', 'b'])
['a', 'b', 'c']
>>> sorted("zero")
['e', 'o', 'r', 'z']
>>> sorted((3, 2, 1))
[1, 2, 3]
리스트 자료형에도 sort라는 함수가 있다. 하지만 리스트 자료형의 sort 함수는 리스트 객체 그 자체를 정렬만 할 뿐 정렬된 결과를 리턴하지는 않는다.
다음 예제로 sorted 함수와 리스트 자료형의 sort 함수의 차이점을 확인해 보자.
>>> a = [3, 1, 2]
>>> result = a.sort()
>>> print(result)
None
>>> a
[1, 2, 3]
>>> str(3)
'3'
>>> str('hi')
'hi'
>>> str('hi'.upper())
'HI'
>>> tuple("abc")
('a', 'b', 'c')
>>> tuple([1, 2, 3])
(1, 2, 3)
>>> tuple((1, 2, 3))
(1, 2, 3)
>>> type("abc")
<class'str'>
>>> type([ ])
<class'list'>
>>> type(open("test", 'w'))
<class'_io.TextIOWrapper'>
>>> list(zip([1, 2, 3], [4, 5, 6]))
[(1, 4), (2, 5), (3, 6)]
>>> list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9]))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> list(zip("abc", "def"))
[('a', 'd'), ('b', 'e'), ('c', 'f')]
>>>list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9]))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]