簡體   English   中英

通過另一個布爾值列表的補碼擴展布爾值列表

[英]extending list of booleans by complements of another list of booleans

給定 booleans 的兩個列表list1list2 ,我想通過list2中元素的補碼來擴展list1 例如,如果

list1 = [True, True, False]
list2 = [False, False, True, False]

然后在手術后

list1 = [True, True, False, True, True, False, True]  

list2應保持不變。

實現這一目標的最pythonic方法是什么?

這個怎么樣:

list1.extend(not value for value in list2)

如果 list2 有可能是 list1 的別名,則最好使用

list1 += [not value for value in list2]
temp_list = [not elem for elem in list2]
list1.extend(temp_list)

如果您想將其推廣到更長或更多的列表/數組,您可以查看 numpy:

a1 = np.array([True, True, False])
a2 = np.array([False, False, True, False])
out = np.r_[a1, ~a2]

輸出: array([ True, True, False, True, True, False, True])

在列表推導中使用not關鍵字,只會將其轉換為它的恭維。

list1.extend([not value for value in list2])

operator模塊提供否定函數, __not__或其別名not_

from operator import __not__

list1.extend(map(__not__, list2))
print(list1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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