簡體   English   中英

使用“按位或”運算符追加列表的系列元素

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

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