Python Any Function

Error Coder·2023년 7월 14일
0

Python Any() 함수

파이썬에서 any() 함수는 list의 원소를 필터링하거나 조건 검사할 때 사용하는 함수이다.

예를들어 test_list라는 이름의 리스트가 있다 해보자.

# Python3 code to demonstrate working of
# Check if any element in list satisfies a condition
# Using list comprehension

# initializing list
test_list = [4, 5, 8, 9, 10, 17]

# Check if any element in list satisfies a condition
# Using list comprehension
res = True in (ele > 10 for ele in test_list)

# Printing result
print("Does any element satisfy specified condition ? : " + str(res))

# Output
# Does any element satisfy specified condition ? : True

파이썬에서는 res = True in (ele > 10 for ele in test_list)라는 코드에서 볼 수 있듯이 리스트 내에서 원소를 지정해 조건을 만족하는지 검색할 수 있다. 위 코드는 n이 리스트의 길이라 할 때, O(n)의 시간복잡도를 가진다.

True in (...) : (...) 안에 쓰인 조건문으로 리스트를 검사한다. 조건을 만족하는 어떤 한 원소라도 존재한다면 True를 반환한다.
ele > 10 for ele in test_list : 리스트 검사 조건으로, 리스트 내부의 원소들이 10보다 큰지 검사한다.

이번에는 파이썬의 내장함수인 any() 함수를 사용하는 예제를 살펴보자. 이 함수는, 위 코드 예제처럼 리스트 내의 모든 원소를 검사하며, O(n)의 시간복잡도와 O(1)의 공간복잡도를 가진다. 또, 어떤 원소든 리스트 내의 조건을 만족하는 원소가 있는지 그 여부에 따라 True 혹은 False를 리턴한다.

# Check if any element in list satisfies a condition
# Using any()
res = any(ele > 10 for ele in test_list)

# Printing result
print("Does any element satisfy specified condition ? : " + str(res))

# Output
# Does any element satisfy specified condition ? : True

참고 : https://www.geeksforgeeks.org/python-check-if-any-element-in-list-satisfies-a-condition/

즉, 위에서 배운 any() 내장함수를 이용해서 if any(cur[1] < q[1] for q in queue) 라는 조건문으로 queue안의 모든 튜플들을 순회하면서 순회중인 튜플의 우선순위가 현재 프로세스에서 pop한 cur 튜플의 우선순위보다 큰지 확인하고, 조건을 만족하면 queue에 현재 프로세스를 다시 집어 넣는 방식으로 로직을 구현할 수 있다.

그리고 큐 안에 원소를 튜플로 집어넣었으므로, 조건을 만족하지 않는다면 실행 순번에 해당하는 answer를 증가시키고 간단하게 cur[0]이 타겟 프로세스 위치인지 검사하는 조건만 넣으면 답을 얻어낼 수 있다.

출처 : https://velog.io/@naro-kim/%EC%8A%A4%ED%83%9D%ED%81%90-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%ED%8C%8C%EC%9D%B4%EC%8D%AC

profile
개발자 지망생

0개의 댓글