Проверьте условие в списке и найдите точно количество элементов, которые нарушают условие - PullRequest
0 голосов
/ 31 января 2019

У меня есть список, как показано ниже:

A = [[-1 - 2*1j, -1 + 2*1j], [-5, -4], [7 - 9*1j, 7 + 9*1j], [9]]

Я хочу проверить, все ли элементы имеют отрицательную вещественную часть или нет.В этом случае последние два элемента имеют положительную вещественную часть.

Как я могу определить число тех элементов, которые нарушают условие?В этом случае я хочу знать, что A[2] и A [3] нарушают условие.

Ответы [ 2 ]

0 голосов
/ 31 января 2019
In [1]: A = [[-1 - 2*1j, -1 + 2*1j], [-5, -4], [7 - 9*1j, 7 + 9*1j], [9]]
In [2]: violates = [i for i, a in enumerate(A) if any([aa.real > 0 for aa in a])]
In [3]: violates
Out[3]: [2, 3]
0 голосов
/ 31 января 2019

Допустим, у вас есть функция p , которая проверяет, является ли условие на объекте истинным или ложным (также называемым предикатом), чтобы найти элементы в списке L , которые нарушить условие, которое вы можете использовать:

list(filter(not(p),L))

Давайте применим это к примеру:

zs = [1 + 2j,5-3j,2,4j]

zs - это список комплексных чисел, кстатив питоне комплексное число записывается как a + bj

print(list(filter(lambda z: z.real >= 0,zs)))

. Это приведет к выводу элементов в zs, имеющих положительную вещественную часть.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...