<edit> 感谢到目前为止回答过我的每一个人。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》时,Mark Pilgrim表示使用for循环作为计数器是“Visual Basic-style thinking”(Simple Counters)。他继续展示如何使用字典循环,但并没有真正解决Python中如何处理for循环计数器的问题,这在其他语言中通常是很常见的。
我希望有人可以向我展示如何在Python中正确编写上述情况。是否有其他方法来实现?
如果我去掉了行计数的部分,是否可能只使用某种列表推导式将两个列表匹配在一起?例如,如果输出中我所需的仅是此内容(没有计数器,用列表推导式实现是否可行):
# Output:
# directory_0/file_a
# directory_1/file_b
# directory_2/file_c
先感谢任何帮助。