반응형
특정 수보다 큰 목록의 값 수
번호 목록이 있고 특정 기준을 충족하는 목록에 번호가 나타나는 횟수를 얻고 싶습니다. 목록 이해력 (또는 함수의 목록 이해력)을 사용할 수 있지만 누군가가 더 짧은 방법을 가지고 있는지 궁금합니다.
# list of numbers
j=[4,5,6,7,1,3,7,5]
#list comprehension of values of j > 5
x = [i for i in j if i>5]
#value of x
len(x)
#or function version
def length_of_list(list_of_numbers, number):
x = [i for i in list_of_numbers if j > number]
return len(x)
length_of_list(j, 5)
더 압축 된 버전이 있습니까?
다음과 같이 할 수 있습니다.
>>> j = [4, 5, 6, 7, 1, 3, 7, 5]
>>> sum(i > 5 for i in j)
3
처음에는 이런 식 으로 추가 True
하는 것이 이상하게 보일 수 True
있지만 비단뱀 적이라고 생각하지 않습니다. 결국 2.3 이후 모든 버전 bool
의 하위 클래스 입니다 int
.
>>> issubclass(bool, int)
True
다음과 같이 더 작은 중간 결과를 만들 수 있습니다.
>>> j = [4, 5, 6, 7, 1, 3, 7, 5]
>>> len([1 for i in j if i > 5])
3
그렇지 않으면 numpy를 사용하는 경우 몇 번의 스트로크를 저장할 수 있지만 senderle의 답변보다 훨씬 빠르거나 컴팩트하다고 생각하지 않습니다.
import numpy as np
j = np.array(j)
sum(j > i)
(다소) 다른 방식 :
reduce(lambda acc, x: acc + (1 if x > 5 else 0), j, 0)
NumPy를 사용하는 경우 (ludaavic의 답변에서와 같이) 큰 배열 sum
의 sum
경우 상당한 속도 향상을 위해 Python의 내장 기능이 아닌 NumPy의 기능 을 사용하고 싶을 것입니다. 예를 들어 랩톱에서 1,000 만 개 요소 배열에 대해> 1000 배 속도 향상 :
>>> import numpy as np
>>> ten_million = 10 * 1000 * 1000
>>> x, y = (np.random.randn(ten_million) for _ in range(2))
>>> %timeit sum(x > y) # time Python builtin sum function
1 loops, best of 3: 24.3 s per loop
>>> %timeit (x > y).sum() # wow, that was really slow! time NumPy sum method
10 loops, best of 3: 18.7 ms per loop
>>> %timeit np.sum(x > y) # time NumPy sum function
10 loops, best of 3: 18.8 ms per loop
(위는 %timeit
타이밍을 위해 IPython의 "마법"을 사용합니다 )
bisect 모듈을 사용하여 다른 계산 방법 :
>>> from bisect import bisect
>>> j = [4, 5, 6, 7, 1, 3, 7, 5]
>>> j.sort()
>>> b = 5
>>> index = bisect(j,b) #Find that index value
>>> print len(j)-index
3
지도와 필터 버전을 추가하겠습니다.
sum(map(lambda x:x>5, j))
sum(1 for _ in filter(lambda x:x>5, j))
반응형
'your programing' 카테고리의 다른 글
.NET의 문자열 끝에서 문자열 자르기-이것이 누락 된 이유는 무엇입니까? (0) | 2020.12.28 |
---|---|
주어진 URL에 대한 Facebook 좋아요 / 공유 수 얻기 (0) | 2020.12.28 |
AngularJS에서 라디오 버튼의 기본값을 설정하는 방법은 무엇입니까? (0) | 2020.12.28 |
Twitter 부트 스트랩 축소 : 토글 버튼 표시 변경 (0) | 2020.12.28 |
성능면에서 Array 대 ArrayList (0) | 2020.12.28 |