【发布时间】:2016-12-12 17:45:42
【问题描述】:
我有一个清单:
oldlist = ['do gs\n','ca ts\n','monk eys\n','fro gs\n','\n','lio ns\n','tige rs\n','she ep\n']
我正在尝试仅提取列表的 first 部分 ['do gs\n', 'ca ts\n', 'monk eys\n', 'fro gs\n'] 在换行符之前 '\n'。
这是我的代码,它输出正确的解决方案:
oldlist = ['do gs\n','ca ts\n','monk eys\n','fro gs\n','\n','lio ns\n','tige rs\n','she ep\n']
print("Before Loop: ", oldlist)
newlist = []
for iter in oldlist:
if '\n' in iter[0]:
break
else:
newlist.append(iter)
print("After Loop: ", newlist)
但是从
开始的那一行if '\n' in iter[0]:
是我不明白它是如何工作的。为什么这个循环只在 iter[0] 时起作用?为什么如果我只是迭代 iter 它只输出一个空白列表?
使用“iter[0]”时的输出:
Before Loop: ['do gs\n', 'ca ts\n', 'monk eys\n', 'fro gs\n', '\n', 'lio ns\n', 'tige rs\n', 'she ep\n']
After Loop: ['do gs\n', 'ca ts\n', 'monk eys\n', 'fro gs\n']
使用“iter”时的输出:
Before Loop: ['do gs\n', 'ca ts\n', 'monk eys\n', 'fro gs\n', '\n', 'lio ns\n', 'tige rs\n', 'she ep\n']
After Loop: []
如果我这样做:
for iter in oldlist:
print(iter[0])
它只从第一个字符串 do gs\n
中吐出 d总而言之,允许 iter[0] 遍历 oldlist 以在 newlist 中给出正确解决方案的幕后发生了什么?
【问题讨论】:
-
打电话给
iter对你没有任何好处。
标签: python loops python-3.x for-loop iteration