我编写了一个对我有意义的代码,但不是python,因为我是python的新手。
在此查看我的代码:
checksum_algos = ['md5','sha1']
for filename in ["%smanifest-%s.txt" % (prefix for prefix in ['', 'tag'], a for a in checksum_algos)]:
f = os.path.join(self.path, filename)
if isfile(f):
yield f
我的目的是在列表中搜索文件名,如:
['manifest-md5.txt','tagmanifest-md5.txt','manifest-sha1.txt','tagmanifest-sha1.txt']
但我遇到了syntax
问题。
感谢您的帮助。
答案 0 :(得分:3)
你是在思考它。
for filename in ("%smanifest-%s.txt" % (prefix, a)
for prefix in ['', 'tag'] for a in checksum_algos):
答案 1 :(得分:1)
或者您需要itertools.product()
:
>>> import itertools
>>> [i for i in itertools.product(('', 'tag'), ('sha', 'md5'))]
[('', 'sha'), ('', 'md5'), ('tag', 'sha'), ('tag', 'md5')]
答案 2 :(得分:1)
使用新样式字符串格式和itertools
:
from itertools import product
["{0}manifest-{1}.txt".format(i,e) for i,e in product(*(tags,checksum_algos))]
<强>出:强>
['manifest-md5.txt',
'manifest-sha1.txt',
'tagmanifest-md5.txt',
'tagmanifest-sha1.txt']