使用“按位或”运算符

时间:2018-03-06 13:31:44

标签: python bitwise-operators

基本上我有一个列表,其中每个元素都是一个系列,列表是任意长的。我想知道如何以可以创建变量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,有更好的方法吗?

由于

2 个答案:

答案 0 :(得分:3)

您尝试执行此操作通常称为“缩减”,可以使用functools.reduce完成:

import functools
import operator

matches = functools.reduce(operator.or_, listerino)

operator module方便地定义operator.or_函数,它接受两个输入并返回x | y

答案 1 :(得分:1)

为什么不使用 val schema = StructType( StructField("foo", StringType, true) :: StructField("bar", StringType, true) :: Nil ) val df = session.read .format("json").option("path", s"${yourPath}") .schema(schema) .load() val withCast = df.select('foo, 'bar cast IntegerType) withCast.show() withCast.write.format("parquet").save(s"${outputPath}") 运算符?

|=

这相当于matches = None for series in listerino: # base case: if matches is None: matches = series else: matches |= series