[英]Return true or false in a list comprehension python
目標是編寫一個接收列表的函數,並返回列表中的數字是否導致True或False。 防爆。 [1,2,3,4] ---> [False,True,False,True]
我寫了這部分代碼:
def even_or_odd(t_f_list):
return = [ x for x in t_f_list if x % 2 == 0]
我知道這段代碼會返回[2,4]。 我怎樣才能這樣做,而不是像上面的例子那樣返回真假?
您應該映射它,而不是按謂詞過濾:
def even_or_odd(t_f_list):
return [ x % 2 == 0 for x in t_f_list]
您也可以使用lambda代替:
l = [1,2,3,4]
map(lambda x: x%2 == 0, l)
你也可以使用bitwise &
那個比%
快一點的東西:
t_f_list = [1,2,3,4]
res = [ not x&1 for x in t_f_list]
print(res)
[False, True, False, True]
定時
In [72]: %timeit [not x&1 for x in t_f_list]
1000000 loops, best of 3: 795 ns per loop
In [73]: %timeit [ x % 2 == 0 for x in t_f_list]
1000000 loops, best of 3: 908 ns per loop
In [74]: %timeit list(map(lambda x: x%2 == 0, t_f_list))
1000000 loops, best of 3: 1.87 us per loop
注意 :添加map
list
以獲取值list
,因為我使用的是python 3.x.
您可以使用list comprehension來獲取布爾值和值:
lst = [1,2,3,4]
result = [x%2 == 0 for x in lst] # Returns boolean
result_1 = [x for x in lst if x%2 == 0] # Returns values
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.