0

私はPythonを初めて使用するため、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それを実装するのに問題がありました。

助けてくれてありがとう。

4

3 に答える 3

3

難しく考えすぎだよ。

for filename in ("%smanifest-%s.txt" % (prefix, a)
    for prefix in ['', 'tag'] for a in checksum_algos):
于 2013-01-10T06:19:31.477 に答える
1

またはあなたが必要ですitertools.product()

>>> import itertools

>>> [i for i in itertools.product(('', 'tag'), ('sha', 'md5'))]
[('', 'sha'), ('', 'md5'), ('tag', 'sha'), ('tag', 'md5')]
于 2013-01-10T06:22:46.320 に答える
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']
于 2013-01-10T06:33:30.020 に答える