EDIT: Это упражнение, в котором четко указаны списки и функции. Таким образом, преобразование списков в набор не допускается.Функция записи, которая проверяет, имеют ли списки одни и те же элементы
Мне нужно написать функцию def sameSet(a,b)
, которая проверяет, имеют ли два списка одинаковые элементы в некотором порядке, игнорируя дубликаты. Например, два списка [1, 4, 9, 16, 9, 7, 4, 9, 11] и [11, 11, 7, 9, 16, 4, 1] будут считаться равными.
Вот что я сделал. Сначала я определил вспомогательную функцию def contained(list1, list2)
, которая проверяет, содержится ли список 1 в списке 2, увеличивая счетчик всякий раз, когда элемент списка 1 находится в списке 2. Затем, в конце, если счетчик равен длине списка 1, я устанавливаю булева переменная same
к True
, потому что это означает, что каждый элемент в списке 1 также находится в списке 2.
def main():
list1 = [1, 4, 9, 16, 9, 7, 4, 9, 11, 11]
list2 = [11, 11, 7, 9, 16, 4, 1]
def sameSet(list1, list2):
contained(list1, list2)
contained(list2, list1)
def contained(list1, list2):
same = False
count = 0
for element in list1:
if element in list2:
count = count + 1
else:
count = count
if count == len(list1):
same = True
return same
main()
Я не уверен, что писать для функции sameSet
. Я хочу, чтобы он проверял, установлена ли логическая переменная same
равной True
для обоих включений (т. Е. Если list1 находится в списке2, а если list2 находится в списке1, что означает, что они равны). Но я не знаю, как реализовать это в Python, чтобы программа работала правильно. Любая помощь будет оценена по достоинству.
Что мне следует писать под заголовком? – Kamil
Я сделал рефакторинг для сохранения функции main(), не обязательно иметь main() в скрипте python. – PabTorre