[英]extending list of booleans by complements of another list of booleans
給定 booleans 的兩個列表list1
和list2
,我想通過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.