У меня есть два списка, показанных ниже. Я пытаюсь использовать функцию list.remove (x), чтобы удалить файлы, которые находятся в обоих списках1 и list2, но в одном из моих списков есть расширения файлов, а другое нет! Какой должен быть мой подход !?Python list.remove (x) 2.7.5
List1 = ['myfile.v', 'myfile2.sv', 'myfile3.vhd', 'etcfile.v', 'randfile.sv']
List2 = ['myfile', 'myfile2', 'myfile3']
#This is in short what I would like to do, but the file extensions throw off
#the tool!
for x in List2:
List1.remove(x)
Спасибо!
Последний на самом деле не «на месте» - он все еще создает копию и затем мутирует исходный список, чтобы он соответствовал копии. Вероятно, нет никакой веской причины действительно хотеть здесь мутации на месте, но если вы этого хотите, вы должны фактически использовать 'remove' /' del'/'pop'/etc. (Это отличный ответ любым другим способом, особенно объяснение того, почему OP должен просто создать новый список.) – abarnert
@abarnert, это «на месте», поскольку могут быть другие ссылки на список1, которые вы ожидаете чтобы увидеть удаления –
Да, это именно то, что я имел в виду под «создает копию, а затем мутирует исходный список для соответствия копии». Мутирование исходного списка в соответствии с копией - это то, почему другие ссылки будут видеть удаления. Но он по-прежнему не является алгоритмом на месте, это алгоритм копирования. – abarnert