#python #python-3.x #list #nested-lists #difference
#python #python-3.x #Список #вложенные списки #разница
Вопрос:
Когда я кодирую на своем локальном компьютере с ограниченными значениями в списках, он работает, и вложенный список не был создан. Но когда я запускаю код с моим основным кодом, список различий (третий список) появляется во вложенной форме.
def non_match_elements(first_list, second_list):
third_list = []
for item in first_list:
if item not in second_list:
third_list.append(item)
def main():
first_list = [1,2,3,4,5,6,10,15,22]
second_list = [2,3,4,14,18]
third_list = (non_match_elements(first_list, second_list))
print(third_list))
if __name__ == "__main__":
main()
Этот код работает нормально, но когда появляются мои исходные списки, он выдает третий список как вложенный список. Как я могу понять, что не так? Мои исходные списки содержат много элементов в строковой форме, и оба являются не вложенными списками. И данные этих списков поступают из разных функций
Комментарии:
1. Не видя ваших «оригинальных списков», мы никак не сможем вам помочь
2. [«Что-то.1.0.00643-НОВОЕ», «Что-то.1.0.00654-НОВОЕ», «Что-то.1.0.00671-НОВОЕ», «Что-то.1.0.00687-НОВОЕ», «Что-то.1.0.00718-НОВОЕ», «Что-то.1.0.00737-НОВОЕ», «Что-то.1.0.00747-НОВОЕ», «Что-то.1.0.00758-НОВОЕ», «Что-то.1.0.00774-НОВОЕ», «Что-то.1.0.00777-НОВОЕ», «Что-то.1.0.00799-НОВОЕ», «Что-то.1.0.00814-НОВОЕ», «Что-то.1.0.00821-НОВОЕ», «Что-то.1.0.00843-НОВОЕ», «Что-то.1.0.00855-НОВОЕ», «Что-то.1.0.00867-НОВОЕ», «Что-то.1.0.00886-НОВОЕ», «Что-то.1.0.00900-НОВОЕ», «Что-то.1.0.00920-НОВОЕ», «Что-то.1.0.00925-НОВОЕ», «Что-то.1.0.00942-НОВОЕ», «Что-то.1.0.00955-НОВОЕ»]
3. это выглядит так и для другого списка @inspectorG4dget
4. попробовал этот список с дополнительным списком, который является частью этого списка. и отлично сработал с моим ответом ниже
5. @S3DEV Я понял, что мой первый список был во вложенной форме, и я печатал его задолго до того, как он был вложен. и да .extend() тоже помог бы, спасибо
Ответ №1:
В примере у вас много опечаток:
-
third_list = (non_match_elements(first_list, second_list))
— ненужная скобка -
print(third_list))
— дополнительно)
-
не вернул функцию
third_list
from
Любопытно, как получилось, что это сработало для вас?
После изменений — работает нормально для меня:
def non_match_elements(first_list, second_list):
third_list = []
for item in first_list:
if item not in second_list:
third_list.append(item)
return third_list
first_list = ["Something.1.0.00643-NEW", "Something.1.0.00654-NEW", "Something.1.0.00671-NEW", "Something.1.0.00687-NEW", "Something.1.0.00718-NEW", "Something.1.0.00737-NEW", "Something.1.0.00747-NEW", "Something.1.0.00758-NEW", "Something.1.0.00774-NEW", "Something.1.0.00777-NEW", "Something.1.0.00799-NEW", "Something.1.0.00814-NEW", "Something.1.0.00821-NEW", "Something.1.0.00843-NEW", "Something.1.0.00855-NEW", "Something.1.0.00867-NEW", "Something.1.0.00886-NEW", "Something.1.0.00900-NEW", "Something.1.0.00920-NEW", "Something.1.0.00925-NEW", "Something.1.0.00942-NEW"]
second_list = []
third_list = non_match_elements(first_list, second_list)
print(third_list)
print(first_list==third_list)
вывод:
['Something.1.0.00643-NEW', 'Something.1.0.00654-NEW', 'Something.1.0.00671-NEW', 'Something.1.0.00687-NEW', 'Something.1.0.00718-NEW', 'Something.1.0.00737-NEW', 'Something.1.0.00747-NEW', 'Something.1.0.00758-NEW', 'Something.1.0.00774-NEW', 'Something.1.0.00777-NEW', 'Something.1.0.00799-NEW', 'Something.1.0.00814-NEW', 'Something.1.0.00821-NEW', 'Something.1.0.00843-NEW', 'Something.1.0.00855-NEW', 'Something.1.0.00867-NEW', 'Something.1.0.00886-NEW', 'Something.1.0.00900-NEW', 'Something.1.0.00920-NEW', 'Something.1.0.00925-NEW', 'Something.1.0.00942-NEW']
True
поскольку все элементы в first_list отсутствуют во second_list — все они распечатаны, я также распечатал проверку, если first_list == third_list . не вижу никаких проблем.
Комментарии:
1. пожалуйста, игнорируйте опечатки, это была моя ошибка. когда я перепечатал здесь, это было пропущено. этот работает нормально, но, как я уже упоминал, он не работает с моими исходными списками, которые извлекаются из других функций. Мой main выглядит так: def main(): first_list = [] second_list = [] first_list.append(вызов моей функции здесь) second_list.append(вызов моей второй функции здесь) third_list = (non_match_elements(first_list, second_list)) if name == » main «: main()
2. можете ли вы предоставить оба списка в своем вопросе, пожалуйста? Я постараюсь проверить ваши конкретные списки
3. first_list = [«Что-то.1.0.00643-НОВОЕ», «Что-то.1.0.00654-НОВОЕ», «Что-то.1.0.00671-НОВОЕ», «Что-то.1.0.00687-НОВОЕ», «Что-то.1.0.00718-НОВОЕ», «Что-то.1.0.00737-НОВОЕ», «Что-то.1.0.00747-НОВОЕ», «Что-то.1.0.00758-НОВОЕ», «Что-то.1.0.00774-НОВОЕ», «Что-то.1.0.00777-НОВОЕ», «Что-то.1.0.00799-НОВОЕ», «Что-то.1.0.00814-НОВОЕ», «Что-то.1.0.00821-НОВОЕ», «Что-то.1.0.00843-НОВОЕ», «Что-то.1.0.00855-НОВОЕ», «Что-то.1.0.00867-НОВОЕ», «Что-то.1.0.00886-НОВОЕ», «Что-то.1.0.00900-НОВОЕ», «Что-то.1.0.00920-НОВОЕ», «Что-то.1.0.00925-NEW», «Something.1.0.00942-NEW»] amp; second_list =[ ]
4. Я взял второй список пустым на некоторое время, чтобы сэкономить время на тестировании
5. Я взял второй список пустым на некоторое время, чтобы сэкономить время на тестировании