Спасибо всем, кто ответил до сих пор. 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 into Python, Марк Пилигрим говорит, что использование циклов for для счетчиков - это «мышление в стиле Visual Basic» ( Simple Counters ). Далее он показывает, как использовать циклы со словарями, но в действительности никогда не обращается к решению на python относительно того, как счетчики циклов обычно используются в других языках.
Я надеялся, что кто-нибудь покажет мне, как правильно написать вышеописанный сценарий на Python. Можно ли сделать это по-другому?
Если я убрал счетчик увеличивающихся строк, можно ли просто сопоставить два списка вместе, используя какое-то понимание списка?
Например, если все, что я хотел получить от вывода, это было (без счетчиков, возможно ли это при понимании списка):
# Output:
# directory_0/file_a
# directory_1/file_b
# directory_2/file_c
Заранее спасибо за любую помощь.