Существующие решения предлагают либо одну, либо другую:
Но пока ни одно решение не имеет. Если вы хотите обоим, попробуйте следующее:
s = set(temp2)
temp3 = [x for x in temp1 if x not in s]
Тест производительности
import timeit
init = 'temp1 = list(range(100)); temp2 = [i * 2 for i in range(50)]'
print timeit.timeit('list(set(temp1) - set(temp2))', init, number = 100000)
print timeit.timeit('s = set(temp2);[x for x in temp1 if x not in s]', init, number = 100000)
print timeit.timeit('[item for item in temp1 if item not in temp2]', init, number = 100000)
Результаты:
4.34620224079 # ars' answer
4.2770634955 # This answer
30.7715615392 # matt b's answer
Метод, который я представил, а также сохранение порядок также (немного) быстрее, чем заданное вычитание, потому что он не требует построения ненужного набора. Разница в производительности будет более заметной, если первый список значительно длиннее второго, и если хеширование дорого. Вот второй тест, демонстрирующий это:
init = '''
temp1 = [str(i) for i in range(100000)]
temp2 = [str(i * 2) for i in range(50)]
'''
Результаты:
11.3836875916 # ars' answer
3.63890368748 # this answer (3 times faster!)
37.7445402279 # matt b's answer
Это уже давно. «GCC», который пришел с 10.8, был действительно GCC-интерфейсом с back-end LLVM.
Лучший способ получить GCC - через Homebrew . После однострочной команды установки homebrew в нижней части связанной страницы вам просто нужно:
$ brew install gcc49
В отличие от macports, Homebrew не загромождает ваши системные диски, и это намного лучше при управлении версиями и удалением , Он также не требует костыля, известного как sudo
.
Это по дизайну, а не нова в OS X 10.9. Apple давно отказалась от GCC. Просто используйте Clang, или если вам нужен fortran / openmp / ..., установите GCC самостоятельно через homebrew / macports /...
Вам нужно будет установить его из macports :
$ sudo port install gcc49
Однако я не уверен, как вы интегрировали gcc
в Xcode 5, однако вы не Не упоминайте, почему вы не можете использовать clang
?
clang
, если вы не можете воспроизвести его полностью.
– trojanfoe
23 October 2013 в 08:52
$PATH
, конфигурация которого является частью процесса установки macports.
– trojanfoe
17 January 2014 в 08:27
Доступные и обновленные пакеты GCC находятся в http://hpc.sourceforge.net/
вы также можете получить компилятор g ++ из http://hpc.sourceforge.net/ . У них есть компилятор в готовом пакете. Просто загрузите и следуйте их указаниям. Обратите внимание, что вам может потребоваться изменить исполняемый файл PATH и / usr / local / bin перед / usr / bin. Это значит, что g ++ вызывает правильный компилятор.
brew tap homebrew/versions
является обязательным условием дляbrew install gcc49
– Bede Constantinides 31 October 2013 в 21:39g++-49
. Вы можете изменить это, добавив псевдоним Bash или символическую ссылку в / usr / local / bin. Этот каталог должен уже отображаться первым в вашем$PATH
, поэтому symlink должен переопределять значение по умолчаниюg++
, не изменяя исходные файлы OSX. – Adam 24 February 2014 в 08:35