簡體   English   中英

在列表解析python中返回true或false

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM