简体   繁体   English

使用Python在列表中查找偶数个数

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

I am searching for the most pythonic way to check, whether one or more elements in a list are even multiples of a predefined number with a predefined tolerance. 我正在寻找最有效的方法来检查列表中的一个或多个元素是否是具有预定义公差的预定义数字的倍数。 An example is given below: 下面是一个示例:

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]

Any suggestions are very appreciated. 任何建议都非常感谢。

How about 怎么样

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)]

The first part determines if the division is within the tolerance of an integer and the second part figures out if this integer is divisible by 2. 第一部分确定除法是否在整数的公差范围内,第二部分确定该整数是否可被2整除。

How about 怎么样

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

Output: 输出:

[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