4

尽管我确定它已经存在,但我已经搜索并找不到答案。我对 python 很陌生,但我以前用其他语言做过这种事情,我正在读取一个数据文件的行格式,我想将每一行数据存储在它自己的元组中,以便在 for 循环之外访问。

tup(i) = inLine

哪里inLine是文件中的行,tup(i)它是存储在其中的元组。i随着循环的进行而增加。然后我可以使用类似的东西打印任何行

print tup(100)  
4

2 回答 2

3

如您在循环中描述的那样创建元组并不是一个好的选择,因为它们是不可变的。

这意味着每次向元组添加新行时,您实际上是在创建一个与旧元组具有相同值的新元组,以及您的新行。这是低效的,通常应该避免。

如果您只需要按索引引用行,则可以使用列表:

lines = []
for line in inFile:
    lines.append(line)

print lines[3]

如果你真的需要一个元组,你可以在完成后转换它:

lines = tuple(lines)
于 2013-03-27T17:42:38.423 回答
1

Python File Object 支持一种名为file.readlines([sizehint])的方法,该方法读取整个文件内容并将其存储为列表。

或者,您可以通过元组传递文件迭代器对象以创建行元组并以您想要的方式对其进行索引

#This will create a tuple of file lines
with open("yourfile") as fin:
    tup = tuple(fin)

#This is a straight forward way to create a list of file lines
with open("yourfile") as fin:
    tup = fin.readlines()
于 2013-03-27T17:45:12.923 回答