728x90

✅ Python ASCII 

  • ord(문자) : 문자에 해당하는 ASCII 정수값 반환 
  • chr(정수) : 정수에 해당하는 ASCII 문자 반환
  • string.ascii_lowercase : 소문자에 해당하는 ASCII 값 
  • string.ascii_uppercase : 대문자에 해당하는 ASCII 값

 

✅ ASCII Chart 


 코드 설명

파이썬의 내장함수가 있다.

 - ord(문자) : 해당 문자의 ASCII 정수값 반환 

- chr(정수) : 해당 정수의 ASCII 문자 반환

- string.ascii_lowercase : 소문자 ASCII 값 

- string.ascii_uppercase : 대문자 ASCII 값

 

파이썬에서 아스키코드로 변환하는 방법을 찾아보다가 이 4가지 방법을 알게 되었다.

 

나는 ord(), chr() 함수에 대해 설명하고자 한다.

 

(1) 문자열 탐색 및 공백 처리

def solution(s, n):
    answer = ''
    for i in s:
        if i == " ":
            answer += " "

문자열 s를 보고 문자 하나씩 탐색해나간다.

만약, i(문자)가 공백문자열이라면, 결과에 공백 문자열을 더해준다. 

 

(2) 아스키코드 처리

def solution(s, n):
    answer = ''
    for i in s:
        if i == " ":
            answer += " "
            
	else:
            k = chr(ord(i) + n)
            if k.isupper() != i.isupper() or not k.isalpha():
                k = chr(ord(k) - 26)
            answer += k
    return answer

- 만약 문자가 공백이 아닐 경우 (else문으로 들어온다.)

- 임시 변수 k에 i의 아스키 코드값을 구한 후 n을 더해주고 이를 다시 문자로 변환한다.

    -> k = 임시 변수

    -> ord(k) + n : k의 아스키 코드 값에 n을 더해줌.

    -> chr(ord(k) + n) : 다시 문자로 바꾸어줌.

 

- 임시변수 k에는 두가지 상황이 있을 수 있다. -> else 문 내에 if 문으로 처리

    (1) k가 특수문자인 경우 (대소문자의 범위에서 벗어남)

    (2) 기존 문자는 대문자이지만, n을 더한 k가 소문자가 된 경우

        -> 아스키코드 표에서 문자 = Z, n =10인 경우를 생각하면 된다.

    (처리방법)

        - 만약 현재 문자 i는 대문자인데, k가 소문자인 경우, 또는 k가 알파벳이 아닌 경우

            -> k에서 26(알파벳의 개수)만큼 빼서 해결할 수 있다.

                -> i = Z, n = 10일 때를 생각해보자.    

                -> i에 n을 더하면 k는 d가 된다. 이때  k.isalpha는 참이지만, 앞 조건이 거짓이 된다.

                -> k에서 26을 빼 주면 J가 된다.

                -> Z에서 10을 더하면  J가 된다!!!

728x90
728x90

파이썬에서 리스트 형태에 저장된 값을 삭제하는 방법을 보겠습니다.

리스트에서 값을 삭제하기 위해서는 함수를 사용하거나 범위를 지정해 삭제할 수 있습니다.

 

 종류  내용
 clear()  모든 요소 삭제
 pop()  지정한 위치 값을 삭제하고 삭제한 값 취득
 remove()  지정한 위치 값과 같은 값을 검색후 처음 값을 삭제
 del  위치 또는 범위를 지정 삭제

 

  clear()

리스트에 저장된 모든 값을 삭제합니다.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

l.clear()
print(l)
# []

 

  pop()

지정한 위치에 값을 취득한 후 삭제합니다.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(0))
# 0

print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(3))
# 4

print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]

 

리스트 인덱스는 0부터 시작합니다.

뒤에서부터 인덱스를 지정하고 싶은 경우는 마이너스를 사용합니다.

뒤에서부터 위치를 지정하는 경우는 -1부터 시작합니다.

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

print(l.pop(-2))
# 8

print(l)
# [1, 2, 3, 5, 6, 7, 9]

 

인덱스를 생략한 경우에는 마지막 값을 취득하고 삭제합니다.

l = [1, 2, 3, 5, 6, 7, 9]

print(l.pop())
# 9

print(l)
# [1, 2, 3, 5, 6, 7]

 

존재하지 않는 인덱스를 지정한 경우에는 에러가 발생합니다.

print(l.pop(100))
IndexError: pop index out of range
 

  remove()

설정한 값과 같은 요소를 검색하고 값을 삭제합니다.

설정한 값이 리스트에 여러개 있는 경우에는 가장 앞에 있는 값 하나만 삭제합니다.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']

l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']

l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']

 

설정한 값이 존재하지 않는 경우에는 에러가 발생합니다.

l.remove('xxx')
ValueError: list.remove(x): x not in list

 

  del

삭제하고 싶은 값을 인덱스로 지정합니다.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]

del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]

 

여러개 값을 지우고 싶은 경우에는 슬라이스로 범위를 지정합니다.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]

l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]

l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]

l = list(range(10))
del l[-3:]
print(l)
# [0, 1, 2, 3, 4, 5, 6]

 

728x90
728x90

문자열(string)을 리스트(list)로


입력된 문자열 "I love python"을 단어 단위로 list로 변환하려면

a= "I love python"
print(a.split()) #공백을 기준으로 나눈다.

>>['I','love','python']

 

split()의 인자로 값을 주면 그 값을 기준으로 나눈다.

a='I/love/python'
print(a.split('/'))

>>['I', 'love', 'python']

단어 단위가 아닌 알파벳 하나씩 나누고싶다면,

a="I love python"
print(list(a))

>>['I', ' ', 'l', 'o', 'v', 'e', ' ', 'p', 'y', 't', 'h', 'o', 'n']

 

 

리스트(list)를 문자열(string)로


위와 반대로 리스트를 문자열로 바꿀수도 있다.

 

a=['I','love','python']
print("".join(a)) # 각 요소를 공백없이 붙인다.
print(" ".join(a)) # 요소사이에 공백을 추가.
print("\n".join(a)) # 한줄에 하나씩.

>>Ilovepython
>>I love python
>>I
>>love
>>python

※리스트의 구성요소가 모두 문자열이어야 가능!

728x90
728x90

Pyhton 진법 변환

 

n진수 → 10진수

* 결과값은 모두 string

* python에서는 기본적으로 int() 라는 함수를 지원한다

>> int(string, base)

위와 같은 형식으로 사용. base에는 진법을 넣으면 된다.

print(int('101',2))
print(int('202',3))
print(int('303',4))
print(int('404',5))
print(int('505',6))
print(int('ACF',16))

20
51
104
185
2767

10진수로 변경이 가능하다.

10진수 → 2, 8, 16진수

2, 8, 16진수는 bin(), oct(), hex() 함수를 지원한다.

print(bin(11))
print(oct(11))
print(hex(11))

0b1011
0o13
0xb

 

0b는 2진수, 0o는 8진수, 0x는 16진수를 의미한다.

진법 표시를 지울려면 [2:]를 하면 된다.

print(bin(11)[2:])
print(oct(11)[2:])
print(hex(11)[2:])

1011
13
b


10진수 → n진수

int 같은 함수가 없기 때문에 코드작성이 필요하다

def solution(n, q):
    rev_base = ''

    while n > 0:
        n, mod = divmod(n, q) n을 p으로 나눈 몫과 나머지
        rev_base += str(mod)

    return rev_base[::-1] 
    # 역순인 진수를 뒤집어 줘야 원래 변환 하고자하는 base가 출력
    
print(solution(45, 3))

# divmod() : 몫과 나머지를 리턴. 리턴 값이 2개이므로 튜플을 사용.
# int(x, base) : base 진법으로 구성된 str 형식의 수를 10진법으로 변환해 줌

1200


n진수 → n진수

위에 썻던것들을 활용해서 n진수를 10진수로 변경하고 다시 n진수로 변경하면 된다.

print(solution(int('c',16),4)) # 16진수인 C를 4진수로 바꾸는것
print(solution(int('4',6),3))  # 6진수인 4를 3진수로 바꾸는것
print(solution(int('21',3),7)) # 3진수인 21을 7진수로 바꾸는것
print(solution(int('15',9),5)) # 9진수인 15를 5진수로 바꾸는것

30
11
10
24

728x90
728x90
 
 

위 그림과 같이 1부터 8까지 여덟 개의 숫자를 포함하는 하나의 리스트가 있습니다.

파이썬에서는 아래와 같이 start, stop, step 세 개의 숫자를 사용해서 리스트를 다양하게 슬라이싱할 수 있습니다.

 
 
  • start를 입력하지 않으면 0을 입력한 것과 같습니다.
  • stop을 입력하지 않으면 리스트의 길이 (len(my_list))를 입력한 것과 같습니다.
  • step을 입력하지 않으면 1을 입력한 것과 같습니다.
1) 시작, 끝 지점 사용하기
 
 

예제

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

print(my_list[3:])
print(my_list[:5])
print(my_list[2:6])
[4, 5, 6, 7, 8]
[1, 2, 3, 4, 5]
[3, 4, 5, 6]

my_list[3:]은 리스트의 인덱스 3의 위치에서 끝까지 슬라이싱합니다.

앞에서 3개의 성분을 제외하는 것과 같습니다.

my_list[:5]은 리스트의 처음부터 인덱스 5의 위치까지 슬라이싱합니다.

앞에서 5개의 성분을 선택하는 것과 같습니다.

my_list[2:6]은 리스트의 인덱스 2의 위치에서 인덱스 6의 위치까지 슬라이싱합니다.

앞에서 6개를 선택하고 2개를 제외하는 것과 같습니다.

 
 
 

2) 음의 인덱스 사용하기

 
 

예제

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

print(my_list[:-2])
print(my_list[-4:])
print(my_list[-5:-2])
[1, 2, 3, 4, 5, 6]
[5, 6, 7, 8]
[4, 5, 6]

my_list[:-2]은 리스트의 처음부터 인덱스 -2의 위치까지 슬라이싱합니다.

뒤에서 2개의 성분을 제외하는 것과 같습니다.

my_list[-4:]은 리스트의 인덱스 -4의 위치에서 끝까지 슬라이싱합니다.

뒤에서 4개의 성분을 선택하는 것과 같습니다.

my_list[-5:-2]은 리스트의 인덱스 -5의 위치에서 인덱스 -2의 위치까지 슬라이싱합니다.

뒤에서 5개를 선택하고 2개를 제외하는 것과 같습니다.

 
 
 

3) 리스트 복사하기

 
 

예제

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

print(my_list[:])
[1, 2, 3, 4, 5, 6, 7, 8]

my_list[:]은 리스트의 처음부터 끝까지 슬라이싱합니다.

리스트 전체를 복사하는 것과 같으며, 얕은 복사 (Shallow copy)에 해당합니다.

 
 
 

4) 간격 (step) 사용하기

 

 

예제

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

print(my_list[::2])
print(my_list[::3])
[1, 3, 5, 7]
[1, 4, 7]

my_list[::2]은 리스트의 처음부터 끝까지 간격 2 단위로 슬라이싱합니다.

my_list[::3]은 리스트의 처음부터 끝까지 간격 3 단위로 슬라이싱합니다.

 
 
 

5) 시작 (start)/끝 (stop)/간격 (step) 사용하기

 
 

예제

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

print(my_list[1::2])
print(my_list[1::3])
print(my_list[2:6:2])
[2, 4, 6, 8]
[2, 5, 8]
[3, 5]

my_list[1::2]은 리스트의 인덱스 1의 위치에서 끝까지 간격 2 단위로 슬라이싱합니다.

my_list[1::3]은 리스트의 인덱스 1의 위치에서 끝까지 간격 3 단위로 슬라이싱합니다.

my_list[2:6:2]은 리스트의 인덱스 2의 위치에서 인덱스 6의 위치까지 간격 2 단위로 슬라이싱합니다.

 
 
 

6) 음의 간격 (step) 사용하기

 
 

예제

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

print(my_list[::-1])
print(my_list[::-2])
print(my_list[::-3])
[8, 7, 6, 5, 4, 3, 2, 1]
[8, 6, 4, 2]
[8, 5, 2]

my_list[::-1]은 리스트의 처음부터 끝까지 간격 -1 단위로 슬라이싱합니다.

뒤집어진 리스트 전체를 복사하는 것과 같습니다.

마찬가지로 my_list[::-2]은 리스트의 처음부터 끝까지 간격 -2 단위로 슬라이싱합니다.

my_list[::-3]은 리스트의 처음부터 끝까지 간격 -3 단위로 슬라이싱합니다.

 

전체 내용은 아래 그림을 참고하세요.

 
 
728x90
728x90

파이썬 코딩 테스트에서 자주 사용되는 데큐(deque)에 대해 알아보자.

 


deque()

  • Stack이나 queue처럼 한 방향에서 삽입과 삭제가 일어나는게 아니라 양방향에서 삽입과 삭제가 일어나는 자료구조이다.
  • 리스트의 양쪽 끝에서 삽입과 삭제를 모두 허용하는 자료의 구조. 이것은 스택과 큐의 자료 구조를 복합한 형태이다.
  • 파이썬에서 list를 사용하는 것과 유사하지만 deque를 사용하는 이유는 시간복잡도 때문이다.

 

  • 리스트에서 0번 인덱스를 삭제한다고 생각해보자. 이때 리스트 내부에서는 0번 인덱스를 제거하고 끝이 아니라 뒤에있는 원소들을 앞으로 하나씩 당겨주는 연산을 더 수행하게된다. 따라서 list의 삭제연산은 O(n)이 걸리는데 반면 deque의 삭제연산은 O(1)이다. 따라서 push, pop이 빈번한 알고리즘의 경우 list보다 deque를 사용하는 것이 효율적이다.

 
 
from collections import deque

데큐는 위와 같이 불러올 수 있다.


deque를 사용하면 얻는 장점

  • 엄격한 리스트를 만들 수 있다.
  • 속도가 리스트에 비해 굉장히 빠르다. List = O(n), deque = O(1)
  • 당연하지만 큐작업이 훨씬 편해진다.

1. 큐(QUEUE)에 대한 이해.

큐는 기본적으로 선입 선출 (FIFO : First In First Out)구조이다.

 

예시로는 다음이 있다.

  • 프린터기 : 프린터기는 먼저 인쇄를 누른 것부터 차례대로 작동한다.
  • 은행 대기표 : 은행에서는 먼저 대기표를 뽑은 사람부터 차례대로 서비스를 진행한다.

 

deque 함수는 큐에 제한되어 있는 선입선출 제한을 풀어서, 더 여러곳에 사용할 수 있도록 한 함수이다.


2. deque 사용하기

from collections import deque
data = [1, 2, 3, 4, 5]
d = deque(data)
print(d)

#출력
deque([1, 2, 3, 4, 5])

 

데큐의 함수 목록은 다음과 같다.

 

함수 목록:

  • append
  • appendleft
  • clear
  • copy
  • count
  • extend
  • extendleft
  • index
  • insert
  • maxlen
  • pop
  • popleft
  • remove
  • reverse
  • rotate

 

여기서 눈여겨 볼 함수는 다음과 같다.

  • appendleft : 왼쪽에 개체를 추가
  • extendleft : 왼쪽에 리스트를 연장
  • maxlen : 큐의 길이를 반환
  • popleft : 큐의 맨 왼쪽에 있는 개체를 반환
  • rotate : 큐를 회전

여기서 로테이트는 처음 접하면 생소할 것이다. 

 

그래서 간단한 예시 2개를 들어보자.

#1
 
d = deque([1, 2, 3, 4, 5])
print(d)
d.rotate(2)
print(d)
d.rotate(-2)
print(d)

#출력
deque([1, 2, 3, 4, 5])
deque([4, 5, 1, 2, 3])
deque([1, 2, 3, 4, 5])

큐 [1 ,2 ,3 ,4 ,5]가 오른쪽에서 왼쪽 방향으로 2 회전하여 [4, 5, 1, 2, 3]이 되었다.

이번에는 반대로 -2로 회전하여  [1 ,2 ,3 ,4 ,5]가 되었다.

 

#2

 from collections import deque
 test = [1, 2, 3, 4, 5, 6, 7, 8, 9]
 test = deque(test)
 test.rotate(2) 
 result = list(test)
 result
[8, 9, 1, 2, 3, 4, 5, 6, 7]

 

 

 

파이썬 알고리즘을 풀다보면 리스트를 회전하는 문제에 많이 직면하게 된다.

이는 python collection 모듈의 deque 자료형을 사용하면된다.

함수안에 음수 를 넣게 된다면 왼쪽회전 양수는 오른쪽회전이다.

728x90
728x90

삼항 연산자 (삼항 표현식)

 

if-else 조건식을 한 줄로 간결하게 표현할 수 있다. 코드를 줄이는데 용이하게 사용할 수 있지만 조건식이 복잡한 경우에는 가독성을 떨어뜨릴 수 있니 적절한 경우에 사용하는 것이 좋다. 이번 포스팅에서는 삼항 표현식 문법의 사용 예시와 중첩 삼항 표현식에 대해서 정리해본다.

 

- 순서 -
1. 삼항 표현식 문법
2. 중첩 삼항 표현식

3. 정리

 

1. 삼항 표현식 문법

true_value if condition else false_value

condition의 Boolean 값을 기반으로 반환된다. if조건식의 condition값이 True이면 true_value를 반환하고 False이면 false_value를 반환한다. 위와 같은 식을 삼항표현식과 if - else 조건식으로 작성해보는 예시는 아래와 같다.

 

삼항 표현식과 if-else 조건식 비교

# 삼항표현식
value = true_value if condition else false_value

# if-else 조건식
if condition:
    value = treue_value
else:
    value = false_value

같은 결과를 출력하지만 삼항 표현식을 사용할 때 코드를 간결하게 작성할 수 있다. 위와 같은 조건식에 직접 값을 대입해서 사용해보면 아래와 같다. 삼항표현식과 if-else 조건식이 같은 결과를 도출하지만 표현하는 방식이 달라진다. 코드는 숫자 10을 기준으로 10이면 ten을 10이 아니면 not ten을 출력하도록 작성하고서 삼항 표현식과 if-else 조건식을 비교해 보았다.

# 삼항표현식
>>> n = 10
>>> value = 'ten' if n == 10 else 'not ten'
ten

# if-else 조건식
>>> n = 1
>>> if n == 10:
>>>     value = 'ten'
>>> else:
>>>     value = 'not ten'
not ten

 

2. 중첩 삼항 표현식

중첩 삼항 표현식은 이름 그대로 삼항 표현식을 중첩된 표현식으로 작성하는 코드이다. 두 개 이상의 if 조건식을 한 줄로 작성할 수 있다. 기본적인 작성 방법은 아래와 같다. 대괄호는 임의로 보기 편하게 하려고 표시한 것이다. 실제로 코드를 작성할 때는 [ ] 괄호는 빼야 한다. 

true_value if condition1 else [ true_value2 if condition2 else false_value ]

if조건식의 condition1 값이 True이면 true_value를 반환하고 False이면 두 번째 조건식의 Boolean 값을 반환한다. condition2의 값이 True이면 true_value2를 False이면 false_value를 반환한다.

 

위의 삼항 중첩 삼항 표현식을 코드로 작성해보면 아래와 같다. 이번에는 임의의 수가 입력 될 때 숫자가 10이면 ten, 10보다 작으면 low, 10보다 크면 high를 출력하는 코드를 작성해보았다.

# 삼항표현식
>>> n = 10
>>> value = 'ten' if n == 10 else 'low' if n < 10 else 'high'
ten

# if-else 조건식
>>> n = 1
>>> if n != 10:
>>>     if n < 10 :
>>>         value = 'low'
>>>     else:
>>>         value = 'high'
>>> else:
>>>     value = 'ten'
low

if-else 조건식으로 작성하면 여러줄에 걸쳐서 작성해야 하는데 비해 삼항 표현식은 한 줄로 작성할 수가 있다. 간편하게 사용이 가능하다. if-else 조건식은 if-elif-else 조건식으로 작성도 가능하다.

 

3. 정리

1) if조건식을 삼항연산자(삼항표현식)를 이용하여 한 줄로 간단하게 작성할 수 있다.

2) 삼항표현식의 기본적인 작성방법은 " true_value if condition else false_value " 형태이다.

3) 삼항표현식은 조건식이 중첩된 경우에도 작성할 수 있다. 중첩 삼항 표현식의 작성방법은 "true_value if condition1 elsetrue_value2if condition2 else false_value " 형태이다.

728x90
728x90

1. count 함수

문자열 안에서 찾고 싶은 문자의 개수를 찾을 수 있다. 어떤 함수는 문자열에서만 사용 가능한 함수도 있는데 count 함수는 튜플, 리스트, 집합과 같은 반복 가능한 iterable 자료형에서도 사용 가능하다. 모든 자료형에서 사용 가능한 것은 아니어서 사용되지 않는 자료형은 아래에서 마저 설명하도록 하겠다.

 

사용방법은 '변수. count(찾는 요소)' 형태로 사용한다. 괄호( ) 안에 찾고자 하는 값을 입력하면 함수를 사용한 변수 안에서 해당 값의 개수를 숫자로 반환한다. 

 

 

2. 문자열 사용예시

'ooyyy'라는 아무 의미 없는 문자열을 예로 들어본다. 해당 문자열에서 y가 몇 개인지 를 count 함수를 사용하여 찾아보겠다. 

>>> 'ooyyy'.count('y')
3

문자열이 짧아서 육안으로도 금방 확인이 가능하다. y의 개수를 숫자인 3으로 반환하였다. 이런 짧은 문자열의 경우 함수를 굳이 사용하지 않겠지만 문자가 길어지거나 요소가 많은 iterable 자료형의 경우 유용하게 사용될 수 있다.

 

이번엔 임의의 변수에 문자열을 선언하여 사용해보겠다. 

'ox o x oxoxox'라는 의미 없는 문자의 나열을 b라는 변수에 선언해보았다. 사용방법은 위와 동일하다.

b.count( )로 사용하면 되고 괄호 안에 찾고자 하는 문자를 찾는다. 'ox'라는 'o'와 'x'가 붙은 문자열이 몇 개인지를 찾아본다.

>>> b = 'ox o x oxoxox'
>>> b.count('ox')
4

'o'와 'x'가 떨어져 있는 경우를 제외한 개수 4를 반환하였다.

 

 

3. 리스트 사용 예시

위에 문자열을 사용한 것과 동일한 패턴으로 사용해보았다. a라는 변수에 리스트를 선언하고서 count 함수를 사용해보고 변수로 선언하지 않은 리스트에서 곧바로 count 함수를 사용했다.

>>> a = [1, 1, 1, 2, 3]
>>> a.count(1)
3

>>> ['ox', 'o', 'x', 'oxoxox'].count('ox')
1

 

4. 에러가 발생하는 자료형

dictionary, set 자료형에서는 count 함수를 사용할 수 없었다. 에러코드는 AttributeError가 발생했다.

그 밖에 bool타입을 변수에 저장한 경우에는 출력되었는데 tuple로 인식되었기 때문에 사용이 되었다.

bool이라는 변수에 쉼표를 이용해서 True, False의 불리언 값 세 개를 선언했더니 bool이라는 변수가 tuple 타입으로 저장되었다. 즉, count 함수를 사용할 수 있는 tuple 타입이었기에 사용된 것이다.

>>> bool = True, False, True
>>> bool.count(True)
2

>>> type(bool)
<class 'tuple'>

 

728x90

+ Recent posts