相关疑难解决方法(0)

在块中迭代列表的最"pythonic"方法是什么?

我有一个Python脚本,它将整数列表作为输入,我需要一次使用四个整数.不幸的是,我无法控制输入,或者我将它作为四元素元组列表传入.目前,我正在以这种方式迭代它:

for i in xrange(0, len(ints), 4):
    # dummy op for example code
    foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3]
Run Code Online (Sandbox Code Playgroud)

它看起来很像"C-think",这让我怀疑有更多的pythonic方式来处理这种情况.迭代后会丢弃该列表,因此无需保留.也许这样的事情会更好吗?

while ints:
    foo += ints[0] * ints[1] + ints[2] * ints[3]
    ints[0:4] = []
Run Code Online (Sandbox Code Playgroud)

但是,仍然没有"感觉"正确.: - /

相关问题:如何在Python中将列表拆分为大小均匀的块?

python optimization loops list chunks

449
推荐指数
15
解决办法
12万
查看次数

混合文件和循环

我正在编写一个脚本来记录来自另一个程序的错误,并在遇到错误时重新启动它停止的程序.无论出于何种原因,该程序的开发人员都认为没有必要在默认情况下将此功能放入其程序中.

无论如何,程序接受一个输入文件,解析它,并创建一个输出文件.输入文件采用特定格式:

UI - 26474845
TI - the title (can be any number of lines)
AB - the abstract (can also be any number of lines)
Run Code Online (Sandbox Code Playgroud)

当程序抛出错误时,它会为您提供跟踪错误所需的参考信息 - 即UI,哪个部分(标题或摘要)以及相对于标题或摘要开头的行号.我想从输入文件中记录有问题的句子,其中包含一个带参考号和文件的函数,找到句子并记录它.我能想到的最好的方法是在文件中向前移动特定次数(即n次,其中n是相对于seciton开头的行号).这样做的方式似乎是:

i = 1
while i <= lineNumber:
    print original.readline()
    i += 1
Run Code Online (Sandbox Code Playgroud)

我不知道这会如何让我丢失数据,但Python认为它会,并说ValueError: Mixing iteration and read methods would lose data.有谁知道如何正确地做到这一点?

python loops file while-loop python-2.7

27
推荐指数
2
解决办法
4万
查看次数

一次读2行

有没有更好的方法从python中的文件一次读取两行:

with open(fn) as f:
    for line in f:
        try:
            line2 = f.next()
        except StopIteration:
            line2 = ''
        print line, line2 # or something more interesting
Run Code Online (Sandbox Code Playgroud)

我在2.5.4.新版本有什么不同?

编辑:删除的答案注意到:在py3k中你需要做下一个(f)而不是f.next().更不用说打印更改了

python

12
推荐指数
1
解决办法
3584
查看次数

如何在python中获取当前打开的文件行?

假设您打开一个文件,并在文件中的某处执行seek(),您如何知道当前文件行?

(我亲自解决了一个ad-hoc文件类,它在扫描文件后将搜索位置映射到该行,但我想看到其他提示并将此问题添加到stackoverflow,因为我无法在任何地方找到问题谷歌)

python file seek line-count

7
推荐指数
2
解决办法
8265
查看次数

Python - 一次从文件中读取1000行

我已经检查了这个,这个这个.

第三个链接似乎有答案,但它没有完成这项工作.

我无法找到将整个文件带到主内存的解决方案,因为我将使用的文件非常大.所以我决定使用islice第3个链接中显示的内容.前2个链接无关紧要,因为它们仅用于2行或读取1000个字符.而我需要1000行. for now N is 1000

我的文件包含100万行:

样品:

1 1 1
1 2 1
1 3 1
1 4 1
1 5 1
1 6 1
1 7 1
1 8 1
1 9 1
1 10 1
Run Code Online (Sandbox Code Playgroud)

因此,如果我一次读取1000行,我应该经历一段while 1000时间,但是当我打印p以检查我已经完成了多少次时,它并没有停留在a 1000.它19038838运行我的程序1400几秒钟后达成了!

码:

def _parse(pathToFile, N, alg):
    p = 1
    with open(pathToFile) as f:
        while True:
            myList = [] …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

6
推荐指数
1
解决办法
1790
查看次数

使用python处理此文本文件的大多数pythonic方法

我有一个包含测试数据的文本文件,如下所示:

hdr 1

hdr2

hdr3

data1

data2

data3

data1

data2

....
Run Code Online (Sandbox Code Playgroud)

每一行之间都有一个空行.

我需要创建一个包含列表的列表

[[hdr1,hdr2,hdr3],[data1,data2,data3],[data1,data2,...]
Run Code Online (Sandbox Code Playgroud)

这样做的简洁,pythonic方式是什么?

python

2
推荐指数
1
解决办法
150
查看次数

python循环遍历行数

我试图在文本文件中一次循环多个N行.例如,如何遍历整个文件,例如它有100行,一次打印10行.这是我得到了多远.

 N=10
 f=open("data.txt")
 for i in range(N):
     line=f.next().strip()
     print line
 f.close()
Run Code Online (Sandbox Code Playgroud)

python loops python-2.7

2
推荐指数
1
解决办法
845
查看次数

标签 统计

python ×7

loops ×3

python-2.7 ×3

file ×2

chunks ×1

line-count ×1

list ×1

optimization ×1

seek ×1

while-loop ×1