Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何保留第一个迭代元素?_Python - Fatal编程技术网

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)