Как сравнить три списка и добавить дубликаты в один список, а не дубликаты в другой список? - PullRequest
0 голосов
/ 16 апреля 2020

Мне нужно разработать способ сравнения всех чисел в трех списках, и если число присутствует во всех трех списках - я должен добавить его в список соответствия_ чисел. Если число не соответствует ни одному из других чисел, я должен добавить его в список unique_numbers. Я попытался использовать для l oop, но мне удалось выполнить только половину уравнения, и я не был уверен, как мне добавить все несопоставимые числа в список unique_numbers. Я также не хочу дубликатов в моем списке совпадающих номеров или уникальных номеров.

list_1 = []

list_2 = []

list_3 = []

matching_numbers = []

unique_numbers = []

countone = 0

counttwo = 0

countthree = 0

import random

name = input("Hello USER. What will your name be?")

print("Hello " + name + ". Welcome to the NUMBERS program.")

amountone = int(input("How many numbers do you wish to have for your first list? Please choose from between 1 and 15."))

while countone != amountone:
  x = random.randint(1, 50)
  list_1 += [x,]
  print(list_1)
  countone += 1

amounttwo = int(input("For your second list, how many numbers do you wish to have? Please choose from between 1 and 15."))

while counttwo != amounttwo:
  x = random.randint(1, 50)
  list_2 += [x,]
  print(list_2)
  counttwo += 1

amountthree = int(input("For your third list, how many numbers do you wish to have? Please choose from between 1 and 15."))

while countthree != amountthree:
  x = random.randint(1, 50)
  list_3 += [x,]
  print(list_3)
  countthree += 1

for a in list_1:
    for b in list_2:
        for c in list_3:
          if a == b and b == c:
            matching_numbers = list(set(list_1) & set(list_2) & set(list_3))
          else:
            unique_numbers = 

1 Ответ

1 голос
/ 16 апреля 2020

Это тот тип вещей, для которого идеально подходят Sets. В отличие от списка, в котором проверка наличия чего-либо имеет степень сложности O(n), набор поиска составляет O(1). Кроме того, в наборах уже есть методы для проверки пересечений, различий и т. Д. c. Таким образом, элементы в трех наборах могут быть вычислены как пересечение трех:

all_numbers = set_1 | set_2 | set_3
matching_numbers = set_1 & set_2 & set_3
unique_numbers = all_numbers - matching_numbers
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...