my_list1 = [30,34,56]
my_list2 = [29,500,43]
목록의 모든 값이> = 30인지 확인하는 방법은 무엇입니까? my_list1
작동해야하고my_list2
하지 않아야합니다.
내가 생각할 수있는 유일한 것은 :
boolean = 0
def func(ls):
for k in ls:
if k >= 30:
boolean = boolean + 1
else:
boolean = 0
if boolean > 0:
print 'Continue'
elif boolean = 0:
pass
2016 업데이트 :
돌이켜 보면 속도가 실제로 중요한 더 큰 데이터 세트를 처리하고 활용 한 후에 numpy
…
>>> my_list1 = [30,34,56]
>>> my_list2 = [29,500,43]
>>> import numpy as np
>>> A_1 = np.array(my_list1)
>>> A_2 = np.array(my_list2)
>>> A_1 >= 30
array([ True, True, True], dtype=bool)
>>> A_2 >= 30
array([False, True, True], dtype=bool)
>>> ((A_1 >= 30).sum() == A_1.size).astype(np.int)
1
>>> ((A_2 >= 30).sum() == A_2.size).astype(np.int)
0
다음과 같이 할 수도 있습니다.
len([*filter(lambda x: x >= 30, my_list1)]) > 0
답변
생성기 표현식과 함께 all()
함수 를 사용하십시오 .
>>> my_list1 = [30, 34, 56]
>>> my_list2 = [29, 500, 43]
>>> all(i >= 30 for i in my_list1)
True
>>> all(i >= 30 for i in my_list2)
False
이것은 30 보다 크 거나 같은지 테스트합니다.my_list1
테스트를 통과하지 못합니다.
함수에서이 작업을 수행하려면 다음을 사용합니다.
def all_30_or_up(ls):
for i in ls:
if i < 30:
return False
return True
예를 들면 바로이 있음을 증명하는 값 찾기로 (30) 아래의 값을, 당신은 반환 하고, 반환False
True
이 반대 증거를 찾을 수없는 경우입니다.
마찬가지로 any()
함수 를 사용하여 하나 이상의 값이 조건과 일치 하는지 테스트 할 수 있습니다 .
답변
… 사용할 수없는 이유가 min()
있습니까?
def above(my_list, minimum):
if min(my_list) >= minimum:
print "All values are equal or above", minimum
else:
print "Not all values are equal or above", minimum
이것이 정확히 당신이 원하는 것인지 모르겠지만 기술적으로 이것은 당신이 요청한 것입니다.
답변
내장 기능이 있습니다 all
.
all (x > limit for x in my_list)
모든 숫자보다 더 큰 값을 제한합니다.
답변
다음을 사용할 수 있습니다 all()
.
my_list1 = [30,34,56]
my_list2 = [29,500,43]
if all(i >= 30 for i in my_list1):
print 'yes'
if all(i >= 30 for i in my_list2):
print 'no'
여기에는 30 이상이 아닌 30 이상인 모든 숫자가 포함됩니다.
답변
np.sum, np.min을 사용하는 것 사이의 전반적인 승자는 대형 배열의 속도 측면에서 np.min 인 것 같습니다.
N = 1000000
def func_sum(x):
my_list = np.random.randn(N)
return np.sum(my_list < x )==0
def func_min(x):
my_list = np.random.randn(N)
return np.min(my_list) >= x
def func_all(x):
my_list = np.random.randn(N)
return all(i >= x for i in my_list)
(함수 안에 np.array 정의를 넣어야합니다. 그렇지 않으면 np.min 함수가 값을 기억하고 timeit으로 속도를 테스트 할 때 계산을 다시 수행하지 않습니다)
“all”의 성능은 기준을 충족하지 않는 첫 번째 요소가 발견되는시기에 따라 크게 달라집니다. np.sum은 약간의 작업을 수행해야하며 np.min은 일반적인 경우 계산 측면에서 가장 가볍습니다. .
기준이 거의 즉시 충족되고 all 루프가 빠르게 종료되면 all 함수가 np.min보다 약간 더 승리합니다.
>>> %timeit func_sum(10)
10 loops, best of 3: 36.1 ms per loop
>>> %timeit func_min(10)
10 loops, best of 3: 35.1 ms per loop
>>> %timeit func_all(10)
10 loops, best of 3: 35 ms per loop
그러나 “all”이 모든 포인트를 통과해야 할 때 확실히 훨씬 더 나 빠지고 np.min이 이깁니다.
>>> %timeit func_sum(-10)
10 loops, best of 3: 36.2 ms per loop
>>> %timeit func_min(-10)
10 loops, best of 3: 35.2 ms per loop
>>> %timeit func_all(-10)
10 loops, best of 3: 230 ms per loop
하지만 사용
np.sum(my_list<x)
x 아래에 얼마나 많은 값이 있는지 알고 싶을 때 매우 유용 할 수 있습니다.
답변
다음을 수행 할 수 있습니다.
def Lists():
my_list1 = [30,34,56]
my_list2 = [29,500,43]
for element in my_list1:
print(element >= 30)
for element in my_list2:
print(element >= 30)
Lists()
30보다 큰 값은 True로, 더 작은 값은 False로 반환합니다.
답변
이 함수를 작성합니다
def larger(x, than=0):
if not x or min(x) > than:
return True
return False
그때
print larger([5, 6, 7], than=5) # False
print larger([6, 7, 8], than=5) # True
print larger([], than=5) # True
print larger([6, 7, 8, None], than=5) # False
min ()의 빈 목록은 ValueError를 발생시킵니다. 그래서 if not x
조건을 추가 했습니다.