Nai*_*aba 0 python iteration loops
请考虑以下代码:
f = open('file.txt')
for l in f:
k = l.strip() # Remove the newline character.
print(k)
f.close()
Run Code Online (Sandbox Code Playgroud)
我想自动删除换行符.我知道我能做到:
for k in [l.strip() for l in f]:
print(k)
Run Code Online (Sandbox Code Playgroud)
但这需要循环f两次的长度(并将整个内容加载到内存中).我想知道是否有更像Pythonic的东西:
for lambda l: l.strip() in f:
print(l)
Run Code Online (Sandbox Code Playgroud)
或者只是:
for l.strip() in f:
print(l)
Run Code Online (Sandbox Code Playgroud)
当然,这些都不起作用.要了解如何将其应用于其他地方,以下是嵌套列表的示例:
d = [['hi'], ['hello'], ['howdy']]
for item in d:
item = item[0] # Get the nested item.
if item == 'hello':
print(item)
Run Code Online (Sandbox Code Playgroud)
您可以使用生成器表达式:
for k in (l.strip() for l in f):
print(k)
Run Code Online (Sandbox Code Playgroud)
这与列表理解非常相似,不同之处在于它会懒惰地(逐个)生成项目,而不是一次性将它们全部收集到列表中.因此,我们只循环一次的长度,f同时避免将所有内容全部转储到内存中.