簡體   English   中英

使用Python在列表中查找偶數個數

[英]Find even multiples of a number in a list using Python

我正在尋找最有效的方法來檢查列表中的一個或多個元素是否是具有預定義公差的預定義數字的倍數。 下面是一個示例:

myNumber=3.5
myList=[0,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5]
myTolerance=0.5

myResult=[0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0]

任何建議都非常感謝。

怎么樣

from numpy import mod, floor
withinTolAbove=[int(mod(number, myNumber) <= myTolerance and
                mod(floor(number / myNumber), 2) == 0) for number in myList]
withinTolBelow=[int(mod(number + myTolerance, myNumber) <= myTolerance and
                mod(floor((number + myTolerance) / myNumber), 2) == 0) for number in myList]
myResult=[max(i1, i2) * int(number > myTolerance) for i1, i2, number in zip(withinTolAbove, withinTolBelow, myList)]

第一部分確定除法是否在整數的公差范圍內,第二部分確定該整數是否可被2整除。

怎么樣

print print([int(abs(x - round(x / myNumber) * myNumber) <= myTolerance and round(x / myNumber) > 1.5) for x in myList])

輸出:

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]

暫無
暫無

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

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