[英]Appending series elements of a list using the “bitwise or” operator
基本上,我有一個列表,其中每個元素都是一個序列,並且該列表任意長。 我想知道如何遍歷列表,以便可以創建一個變量matches = listerino[0] | listerino[1] | ... | listerino[len(listerino)]
matches = listerino[0] | listerino[1] | ... | listerino[len(listerino)]
matches = listerino[0] | listerino[1] | ... | listerino[len(listerino)]
。
到目前為止,我最接近上述情況的是:
matches = pd.Series()
for t in range(0, len(listerino)-1, 2):
x = listerino[t] | listerino[t+1]
matches = matches | x
但是,正如您可能看到的那樣,這只會對我希望的偶數長度列表起作用,因為它錯過了奇數長度列表的最后一個元素。 另外,我不得不混亂地定義匹配項,使其首先等於一個空序列,然后附加到x上,是否有更好的方法呢?
謝謝
您嘗試執行的此操作通常稱為“還原”,可以使用functools.reduce
來完成:
import functools
import operator
matches = functools.reduce(operator.or_, listerino)
operator
模塊方便地定義了operator.or_
函數,該函數接受兩個輸入並返回x | y
x | y
。
為什么不使用|=
運算符?
matches = None
for series in listerino:
# base case:
if matches is None:
matches = series
else:
matches |= series
這等效於matches = matches | series
matches = matches | series
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.