Python проверка списка - PullRequest
       4

Python проверка списка

0 голосов
/ 19 марта 2020

Есть ли Pythoni c способ узнать, какое число отличается по четности от других?

Например:

input: "2 4 7 8 10" => output: 3 // Third число нечетное, в то время как остальные числа четные

input: "1 2 1 1" => 2 // Второе число четное, в то время как остальные числа нечетные

Сильфон мой подход, где numbers является вводом как str:



def evenness(numbers):

    bool_number = list(map(lambda i: i%2==0, map(lambda i: int(i), numbers.split(" ")))) 

    if bool_number.count(True) == 1:
        return bool_number.index(True)+1
    else:
        return bool_number.index(False)+1

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Вы можете попробовать эту функцию, она вернет вам индекс единственного элемента, который отличается от других, и если будет более одного или нуля, тогда он вернет -1

def evenness(numbers):
    res = list(filter(lambda x: x.count(0) == len(x) -1, [[i if int(n) % 2 else 0 for i, n in enumerate(numbers.split(" "))], [i if not int(n) % 2 else 0 for i, n in enumerate(numbers.split(" "))]]))
    return -1 if len(res) != 1 else sum(res[0]) 
0 голосов
/ 20 марта 2020

Если у вас есть только один случай нечетного / четного расхождения, вы можете преобразовать все числа в 1с (для шансов) и 0с (для четных) и проверить первые 1 или первые 0 в зависимости от того, есть ли у вас более один нечетный:

s     = "2 4 7 8 10"
odds  = [int(n)&1 for n in s.split()]
index = odds.index(sum(odds)==1)+1

print(index) # 3
...