Подсчитать вхождения числа в два списка и вернуть один список - PullRequest
1 голос
/ 06 декабря 2011

Я пытаюсь подсчитать количество случаев, когда 0 встречается в двух списках вместе, и сохранить это число, используя python.Я пытаюсь поместить его в третий список, используя команды 'list compitionsion', но я не получаю желаемый вывод.

Мои два списка:

list1 = [0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1]
list2 = [0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0]

Итак, в любое время0 происходит в том же месте в каждом списке, я хотел бы добавить '0' в новый список.Я хотел бы сделать то же самое с теми.

новый список должен выглядеть так:

newlist = [0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1]

Спасибо за помощь заранее, я пытался выяснить, каксделать это в течение нескольких часов безрезультатно!

Ответы [ 5 ]

5 голосов
/ 06 декабря 2011

Вы можете использовать понимание списка, например:

answer = [x for x, y in zip(list1, list2) if x == y]

В качестве альтернативы, вы можете решить без списочных представлений, используя простые операции со списками:

answer = []
for x, y in zip(list1, list2):
    if x == y:
        answer.append(x)

В обоих случаях answer будет:

[0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1]
1 голос
/ 06 декабря 2011
[x or y for x,y zip(list1, list2)]
0 голосов
/ 06 декабря 2011
list1 = [0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1]
list2 = [0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0]
temp = [ list1[i] if list1[i] == list2[i] else 2 for i in range( 0, len(list1) )]
answer = [value for value in temp if value != 2]
print( answer )
0 голосов
/ 06 декабря 2011

Решение

Если вы хотите, чтобы список, состоящий из 0 и 1 в порядке 0 или 1, появлялся в одной и той же позиции в обоих списках , то выможно использовать следующее понимание списка:

result = [a for a, b in zip(list1, list2) if a==b]

Test

Однако, проверяя ваши значения:

>>> newlist = [a for a, b in zip(list1, list2) if a==b]
>>> newlist
[0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1]

вы видите, что результат не равен вашемуожидая:

>>> newlist == [0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1]
False

Итак, вопрос для вас: является ли ожидаемый результат, который вы предоставили, правильным?

0 голосов
/ 06 декабря 2011
[0 if x == (0,0) else 1 for x in zip(list1,list2)]
...