프로그래밍/Python

[python] len() 함수 vs count() 메소드

채윤아빠 2021. 4. 6. 21:15
728x90
반응형

자바 같은 경우, "length" 속성을 통하여 문자열의 길이나, 배열의 개수를 알 수 있었는데, 파이썬의 경우에는 len() 함수를 이용합니다.
일부 클래스에서는 count() 메소드를 통하여 항목의 개수를 반환하는 경우가 있었지만, 파이썬은 약간 다릅니다.

 

시퀀스나 컬렉션에 대한 항목 개수를 얻기 위해서는 len() 함수를 이용하고, 시퀀스 객체에 대한 count() 메소드의 경우, 입력한 서브 시퀀스가 중첩되지 않게 나타나는 회수를 반환합니다.

 

각각의 함수들에 대해 자세히 살펴보면 다음과 같습니다.

len() 함수

파이썬에서 시퀀스(문자열, bytes, bytearray, 리스트, 튜플, range 등) 또는 컬렉션(딕셔너리, set)의 길이 (항목 수)를 얻는데 이용합니다.

import array
import struct

print('len() function example')
array1 = array.array('i', [123, 3423, 252, 3245, 2134, 123, 4653, 123])
print('len1 = ', len(array1))

bytes2 = struct.pack('IIIIIIII', 123, 3423, 252, 3245, 2134, 123, 4653, 123)
print('bytes = ', bytes2)
print('len2 = ', len(bytes2))

bytesarray3 = bytearray(bytes2)
print('bytesarray = ', bytesarray3)
print('len3 = ', len(bytesarray3))
bytesarray3.extend(b'{\x00\x00\x00')
print('len4 = ', len(bytesarray3))
""" result =>
len() function example
len1 =  8
bytes =  b'{\x00\x00\x00_\r\x00\x00\xfc\x00\x00\x00\xad\x0c\x00\x00V\x08\x00\x00{\x00\x00\x00-\x12\x00\x00{\x00\x00\x00'
len2 =  32
bytesarray =  bytearray(b'{\x00\x00\x00_\r\x00\x00\xfc\x00\x00\x00\xad\x0c\x00\x00V\x08\x00\x00{\x00\x00\x00-\x12\x00\x00{\x00\x00\x00')
len3 =  32
len4 =  36
"""

count() 메소드

count() 메소드는 bytes, bytearray나, array에서 입력한 서브 시퀀스가 지정한 시작(start)부터 마지막(end)까지에서 몇 번이나 나타나는지 계수한 값을 반환하는 클래스내의 메소드입니다.

import array
import struct

print('count() method example')
array1 = array.array('i', [123, 3423, 252, 3245, 2134, 123, 4653, 123])
print('count1 = ', array1.count( 123 ))

bytes2 = struct.pack('IIIIIIII', 123, 3423, 252, 3245, 2134, 123, 4653, 123)
print('bytes = ', bytes2)
print('count2 = ', bytes2.count( b'{\x00\x00\x00' ))

bytesarray3 = bytearray(bytes2)
print('bytesarray = ', bytesarray3)
print('count3 = ', bytesarray3.count( b'{\x00\x00\x00' ))
bytesarray3.extend(b'{\x00\x00\x00')
print('count4 = ', bytesarray3.count( b'{\x00\x00\x00' ))
""" result =>
count() method example
count1 =  3
bytes =  b'{\x00\x00\x00_\r\x00\x00\xfc\x00\x00\x00\xad\x0c\x00\x00V\x08\x00\x00{\x00\x00\x00-\x12\x00\x00{\x00\x00\x00'
count2 =  3
bytesarray =  bytearray(b'{\x00\x00\x00_\r\x00\x00\xfc\x00\x00\x00\xad\x0c\x00\x00V\x08\x00\x00{\x00\x00\x00-\x12\x00\x00{\x00\x00\x00')
count3 =  3
count4 =  4
"""

참고자료

https://docs.python.org/ko/3.9/library/functions.html
https://docs.python.org/ko/3.9/library/stdtypes.html
https://docs.python.org/ko/3.9/library/array.html