使用for循环创建一系列元组

时间:2013-03-27 17:17:15

标签: python for-loop tuples

我已经搜索过,但即使我确定它已经存在,也无法找到答案。我是python的新手,但我之前在其他语言中做过这种事情,我正在读取数据文件,我希望将每行数据存储在它自己的元组中,以便在for循环之外访问。 / p>

tup(i) = inLine

其中inLine是文件中的行,tup(i)是它存储的元组。i随着循环的变化而增加。然后我可以使用与

类似的东西打印任何一行
print tup(100)  

2 个答案:

答案 0 :(得分:3)

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

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

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

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

print lines[3]

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

lines = tuple(lines)

答案 1 :(得分:1)

Python文件对象支持名为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()