4

私は検索しましたが、すでにそこにあると確信していますが、これに対する答えを見つけることができません。私はPythonに非常に慣れていませんが、以前に他の言語でこの種のことを行ったことがあります。データファイルから行で読み取っていて、データの各行を独自のタプルに格納して、forループの外側でアクセスしたいと考えています。

tup(i) = inLine

whereinLineはファイルの行で、 は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 に答える