【发布时间】:2010-10-05 23:59:05
【问题描述】:
感谢到目前为止所有回答的人。 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 风格的思维”(Simple Counters)。他继续展示如何在字典中使用循环,但从未真正解决有关 for 循环计数器通常如何在其他语言中使用的 python 解决方案。
我希望有人能告诉我如何用 Python 正确地编写上述场景。有可能以不同的方式来做吗?
如果我取出递增的行数,是否可以使用某种列表理解将两个列表匹配在一起?
例如,如果我想要从输出中得到的只是这个(没有计数器,可以通过列表理解实现):
# Output:
# directory_0/file_a
# directory_1/file_b
# directory_2/file_c
提前感谢您的帮助。
【问题讨论】:
-
我添加了一个带计数器的示例
-
我可以建议那些是“列表”而不是“数组”,这是一个小问题。
-
@SilentGhost 非常感谢,我已将您的答案标记为已接受的答案。感谢您的帮助! @Ali 好点,我将帖子更新为“列表”而不是“数组”。