Я хотел бы перебрать два одинаково длинных набора и определить, находятся ли элементы в каждом наборе также в массиве.Понимание списка Python с несколькими списками и if else conditon
Это вопрос Hackerrank, о котором я уже решил. Тем не менее, я использую Hackerrank для дальнейшего понимания Python. Я узнал о понимании списков, и пока я верю, что пытаюсь использовать его, чтобы считаться плохим производственным кодом. Мне все же хотелось бы изучить возможности синтаксиса языка для моих собственных знаний.
Это код, который устанавливает его:
n, m = map(int, input().split())
arr = list(map(int, input().split()))
A = set(map(int, input().split()))
B = set(map(int, input().split()))
Задача состоит в том, чтобы выводить целое число со значением +1 для каждого элемента, как в А и обр и -1 для каждого элемента, как в B и обр.
Пример ввода:
3 2
1 5 3
3 1
5 7
Пример вывода:
1
Это обеспечивает достижение требуемых результатов:
print(sum([1 for a in A if a in arr]) + sum([-1 for b in B if b in arr]))
Однако, это ближе к тому, что я хотел бы достичь:
sum([1 if a in arr else -1 if b in arr for a, b in zip(A, B)])
EDIT (это ближе на самом деле):
print(sum(1 if a in arr -1 if b in arr for a, b in zip(A, B)))
Как вы можете видеть оба однострочечники, так что не о попытке сократить код, а просто понять возможности списка понимания и вещей кода , Если это невозможно или даже плохая практика, мне тоже очень интересно.
Это ссылка Hackerrank: https://www.hackerrank.com/challenges/no-idea
Зачем использовать понимание списка * вообще *, если вы немедленно переверните список в набор? Вместо этого вы можете использовать понимание набора. –
Кстати, я не думаю, что вам нужны списки, если я хорошо помню 'sum()' принимает любую итерабельность, поэтому вы можете удалить '[]' и передать ей генераторы. – spectras
@spectras Я этого не знал. Я попытаюсь сделать это без учета списков. Я также просто заметил, что 'else if' будет некорректным, так как это должны быть два оператора' if', поэтому второе условие проверяется, даже если первое не соответствует действительности. – joshuatvernon