Если ваш результат будет новым, вы можете использовать понимание списка:
new_list = [ some_function(i, j) for i, j in zip(list1, list2) ]
Вот реальный пример приведенного выше кода:
>>> list1 = [1, 2, 3, 4]
>>> list2 = [1, 3, 4, 4]
>>> like_nums = [ i == j for i, j in zip(list1, list2) ]
>>> print like_nums
[True, False, False, True]
Это сделает список bools, который показывает, являются ли элементы одного индекса в двух списках равными друг другу.
Кроме того, если вы используете функцию zip, существует возможность разархивировать результат, когда вы закончите работу с ним. Вот как это сделать:
>>> list1 = [1, 2, 3, 4]
>>> list2 = [1, 3, 4, 4]
>>> new_list = zip(list1, list2) # zip
>>> print new_list
[(1, 1), (2, 3), (3, 4), (4, 4)]
>>> newlist1, newlist2 = zip(*new_list) # unzip
>>> print list(newlist1)
[1, 2, 3, 4]
>>> print list(newlist2)
[1, 3, 4, 5]
Это может быть полезно, если вам нужно изменить исходные списки, а также каким-то образом сравнить элементы одного и того же индекса.
Здесь есть довольно подробное объяснение того, как сделать довольно хороший импорт SVN, в котором объясняется, как правильно конвертировать ветки:
https://git-scm.com/book/ ru / v1 / Git-and-Other-Systems-Migrating-to-Git
Краткий ответ - запустить это:
$ cp -Rf .git/refs/remotes/* .git/refs/heads/
$ rm -Rf .git/refs/remotes
Надеюсь, это поможет.
Другой хороший способ сделать это, просто для записи, - использовать svn2git . Я сейчас конвертирую несколько довольно больших репозиториев, и это был находка. Он автоматизирует все шаги, необходимые для обработки веток и преобразования тегов svn в настоящие теги git.
Скотт решение не сработало для меня. Я подозреваю, что что-то могло измениться в последней версии git-svn с тех пор, как он опубликовал это (и с тех пор, как была написана связанная книга), поскольку она, похоже, агрессивно собирает мусор, как только клон будет завершен. Но это только предположение, почему это не сработало. Я использую git 1.6.5.6.
В частности, мой каталог .git / refs / remotes был полностью пуст, за исключением каталога тегов, который также был пуст. Так что нет ничего, что я мог бы скопировать, чтобы исправить это.
После некоторых поисков я смог исправить это, проверив файл .git / Packed-refs и выполнив поиск и замену в следующем (в этом порядке ):
refs/remotes/tags => refs/tags
refs/remotes => refs/heads
Если ваш редактор - vim, вы можете сделать это с помощью этих двух команд:
:%s/refs\/remotes\/tags/refs\/tags/g
:%s/refs\/remotes/refs\/heads/g
svn2git 1.3.1 также не дал мне полезного результата (не импортировал никаких коммитов после определенного момента несколько месяцев назад, и все ветки показали одинаковые коммиты). На данный момент я отказался от svn2git и добился наибольшего успеха, используя git-svn в сочетании с вышеупомянутым.
Принятие желаемого за действительное: конечно, было бы неплохо, если бы git-svn просто добавил команду типа 'отказаться'