Это не называется «дважды». Это то, как вы пишете понимание списка. Мы можем «раскатать» этот список понимание в цикл, чтобы сделать его легче понять:
lst = []
for f in listdir(mypath):
if isfile(join(mypath, f)):
lst.append(f)
Объяснение:
[f for f in listdir(mypath) if isfile(join(mypath, f))]
^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
| | Condition to satisfy
| What to iterate over
What to append to output list
Общее правило из списка понимания, если что вы итерацию над источником (или некоторая повторяемость), каким-то образом модифицируя каждый элемент в этом источнике или гарантируя, что он удовлетворяет некоторому условию перед добавлением его в ваш новый выходной список.
Другой пример, где вы хотите, чтобы удалить все неположительные номера из списка источников, и двойные все позитивы:
src = [-1, -2, 0, 1, 2]
out = [i*2 for i in src if i > 0]
print(out) # [2, 4]
Вы должны Google «питона список понимание». – Turn
Не читайте его 'f for f', читайте его как' f (для f в чем-то) ' – tglaria