私はそれがこれを置き換えることができるのかどうかを知るしたい場合:ヘルプリスト内包内のリスト要素の条件は
0
A
答えて
1
を使用します:あなたは、関数の中で、あなたの条件を包むことができ
ここresults = [x for x, name, ext in ((x, *os.path.splitext(x)) for x in os.listdir(dir_path))
if ext == ".tif" and "abc" in name]
、*os.path.splitext(x)
はアンパック外部リストの理解の中の変数name
とext
への呼び出しの結果(Python 3のみ)。古いバージョンの場合は、代わりに(x,) + os.path.splitext(x)
を使用できます。また、splitext
は、ではなく、(name, ext)
のタプルを返します。
また、splitext
を使用する代わりに、名前部分で検索する部分をファイル名の拡張部分に含めることはできないと仮定して、ファイル名を直接確認してください。
results = [x for x in os.listdir(dir_path) if x.endswith(".tif") and "abc" in x]
3
あなたのラインの
results = [x for x in os.listdir(dir_path) if ext == ".tif" and "abc" in name for ext, name in os.path.splitext(x)]
ありがとう:のようなもので
results = [x for x in os.listdir(dir_path) if os.path.splitext(x)[1] == ".tif" and "abc" in os.path.splitext(x)[0]]
かなり長いので、複数の行に分割したいかもしれません。
def filter_file(path):
ext, name = os.path.splitext(path)
if not ext == '.tif':
return False
return 'abc' in name
そして、あなたは内側のジェネレータ式を使用してname
とext
を定義することができ
results = [x for x in os.listdir(dir_path) if filter_file(x)]
+0
確かに、これも動作する可能性があります。 – MMagician
1
私は、これはあなたが望むものであることを推測しています:
results = [name + ext for name, ext in [os.path.splitext(x) for x in os.listdir(dir_path)] if ext == ".tif" and "abc" in name ]
注:私はext
前name
を配置しています。
内部リストは、名前とext値であるタプルのリストを生成しています。
関連する問題
- 1. リスト内包の内部ループ条件
- 2. Pythonのリストの並べ替え要素(リストの内包表記)
- 3. はリスト内包
- 4. Python:条件の場合のリスト内の要素の数のカウント
- 5. 条件付きIf-Elseリスト内包語の補完
- 6. ダイナミック自己参照リスト内包の条件
- 7. 条件(python)のリスト内の要素の合計
- 8. Pythonのリスト内包
- 9. Pythonのリスト内包
- 10. リスト内包のインラインプリント
- 11. リスト内包に
- 12. リスト内包、
- 13. リスト内包
- 14. リスト内包エラー
- 15. 使用リスト内包
- 16. リスト内包して
- 17. リストインデックスパイソンとリスト内包
- 18. リスト内包変換
- 19. 取る方法モナドに包まれたリスト内の要素
- 20. はリスト内包中に
- 21. リスト内包で複数のAND条件を使用するには?
- 22. のPython - リスト内包表記
- 23. Pythonのリスト内包エラーが
- 24. リスト内のリスト内の要素(リストのリスト)を置き換える方法は?
- 25. リスト内の条件付きのHibernate SQLQuery
- 26. リスト内包表記内の「elif」
- 27. リスト内の要素のブールステートメント
- 28. Pythonのリスト内包1つの宣言と2つの内包
- 29. リスト内の "Multi-"インデックス要素
- 30. Python - リスト内包で複数の条件出力を適用する
os.path.splitext(x)のext、nameの名前に '' abc "とは何ですか?あなたはここで何を達成しようとしていますか? –
あなたは、 os.path.splitext(x)[1]]の中で、ext == ".tif"と "abc"の場合、[x for os.listdir(dir_path) –
@ juanpa.arrivillagaはい、ありがとう、私は別の方法の周りを意味しました。そして、 "abc"はちょうど任意の名前です。私はファイル名に "abc"を持つと同時に拡張子 ".tif"を持つすべてのファイルを一覧表示しようとしています – MMagician