< редактирование > Спасибо всем, кто ответил до сих пор. Zip и os.path.join действительно полезны. Любые предложения о том, как перечислить счетчик спереди, не делая ничего подобного:
zip(range(len(files)), files, directories)
</редактировать >
Привет,
Я изучаю Python, но я исхожу из фона, где типичен следующий псевдокод:
directories = ['directory_0', 'directory_1', 'directory_2']
files = ['file_a', 'file_b', 'file_c']
for(i = 0; i < directories.length; i++) {
print (i + 1) + '. ' + directories[i] + '/' + files[i] + '\n'
}
# Output:
# 1. directory_0/file_a
# 2. directory_1/file_b
# 3. directory_2/file_c
В Python, как я бы написал выше прямо сейчас, было бы так:
directories = ['directory_0', 'directory_1', 'directory_2']
files = ['file_a', 'file_b', 'file_c']
for i in range(len(directories)):
print '%s. %s/%s' % ((i + 1), directories[i], files[i]
# Output:
# 1. directory_0/file_a
# 2. directory_1/file_b
# 3. directory_2/file_c
Во время чтения Dive in Python Марк Пилигрим говорит, что использование циклов для счетчиков - это "мышление в стиле Visual Basic" (Simple Counters). Он продолжает показывать, как использовать циклы со словарями, но никогда не обращается к решению python в отношении того, как для счетчиков циклов обычно используются на других языках.
Я надеялся, что кто-нибудь может показать мне, как правильно написать описанный выше сценарий в Python. Можно ли сделать это по-другому?
Если бы я вынул инкрементный счет строки, можно ли просто совместить два списка вместе, используя какое-то понимание списка?
Например, если все, что я хотел от вывода, это (без счетчиков, это возможно со списком):
# Output:
# directory_0/file_a
# directory_1/file_b
# directory_2/file_c
Заранее благодарим за помощь.