Используйте понимание списка с помощью set
:
list1 = ["image1.png", "image2.png", "image3.png", "image3.png"]
list2 = ["image1.pdf", "image2.eps", "image3.ps"]
print [x for x in set(list1) for y in set(list2) if x.split('.')[0] == y.split('.')[0]]
Выход:
['image1.png', 'image2.png', 'image3.png']
Можно использовать Муравья актуальная задача создать свойство и выполнить другую цель, только если то свойство установлено.
я не знаю много о гибком проводе, но Вы, вероятно, хотите что-то вроде этого:
<?xml version="1.0" encoding="UTF-8"?>
<project name="test" default="compile">
<target name="checkforchanges">
<uptodate property="nochanges">
<srcfiles dir="." includes="**/*.as"/>
<srcfiles dir="." includes="**/*.mxml"/>
<mapper to="applicaton.flex"/>
</uptodate>
</target>
<target name="compile" depends="checkforchanges" unless="nochanges">
...
</target>
</project>
задача OutOfDate от библиотека contrib муравья является IMO, намного более чистым, чем опция Ant uptodate
. Причина состоит в том, что необходимо определить дополнительные цели только для установки свойства.
решение с Муравьем contrib (от их страницы в качестве примера):
<outofdate>
<sourcefiles>
<pathelement path="build.xml"/>
<fileset dir="${lib.dir}"/>
</sourcefiles>
<targetfiles path="${jrun.file}"/>
<sequential>
<mkdir dir="${build.bin.dir}"/>
<echo file="${jrun.file}" message="java -cp ${jrun.path} $*"/>
<chmod file="${jrun.file}" perm="ugo+rx"/>
</sequential>
</outofdate>
Все сохранено приятно в одной единой цели.