Python 如何保留第一个迭代元素?
如何在我的示例中保留第一个迭代元素 示例数据:Python 如何保留第一个迭代元素?,python,Python,如何在我的示例中保留第一个迭代元素 示例数据: with open(args[0]) as f: reader = csv.reader(f, delimiter=',') for row in reader: pass 我需要离开00000000,试试: 000, 000, 000, 666, 444, 555, 111, 111, 111, 只需在for循环外部调用next(),即可跳过该行 for i in
with open(args[0]) as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
pass
我需要离开00000000,
试试:
000, 000, 000,
666, 444, 555,
111, 111, 111,
只需在for循环外部调用
next()
,即可跳过该行
for i in range(1, len(reader)):
row = reader[i]
使用
next
跳过一行:
with open(args[0]) as f:
reader = csv.reader(f, delimiter=',')
reader.next()
for row in reader:
doSomething()
请小心将第二个参数指定给next
,如果迭代器已经为空(如果是空文件),即使您不关心它,它也会返回第二个参数。否则将引发StopIteration
,如果您碰巧从其他地方的生成器表达式内部调用此函数,则可能会导致真正意外的行为…尝试以下操作
with open(args[0]) as f:
reader = csv.reader(f, delimiter=',')
next(reader, None) # Read and skip first line
for row in reader:
pass
我假设您的文件不是非常大。如果这个假设是错误的,那就忘掉这个解决方案吧。如果是正确的,我认为从语义的角度来看,最好的解决方案是:
with open(args[0]) as f:
index = 0
reader = csv.reader(f, delimiter=',')
for row in reader:
index++
if(index=1):
pass
do somthing
这将您的任务分为两个步骤:
- 读取文件,生成行列表
- 遍历行的子集
它不是最节省内存的解决方案,但在大多数应用程序场景中,这一点都不重要。如果您对内存效率感兴趣,请使用基于
next()
的解决方案。请注意,使用itertools
,尤其是itertools.islice(iterable,start,stop[,step])
,可以改进这里的方法。您只需在for循环外部调用.next()
:reader=csv.reader(f,delimiter=,')reader.next()就可以在reader中的行中调用doSomething
您缺少一些内容,index
的值永远不会更改。无论是index++
还是if(index=1):
都不是有效的Python语法。
with open(args[0]) as f:
reader = csv.reader(f, delimiter=',')
rows = list(reader)
for r in rows[1:]:
do_stuff_with_row(r)