あなたの質問の仕方は、あなたが自分のプログラムに最終的に何をさせたいのかはっきりしていないことを示しています。
まず、その行はファイルをリストに変換するだけではありません。それをタプルのリストに変換します。各タプルは、ファイル内の 1 行のスペースで区切られた値のセットです。
与えられたとおりにあなたの質問に答えますが、答えのいくつかはあなたをさらに混乱させるかもしれないと思います.
1 開くファイルは静的ではなく動的ですか? つまり、ユーザーは開くファイルを選択します。
"cluster2.wcf"
文字列である必要はありません。変数にすることができます。質問を文字通りに読む場合は、コードを変更してそれを行う方法を次に示します。
filename = raw_input("Which file would you like to read: ")
l = [s.strip().split() for s in open(filename).readlines()]
ここで注意点。ファイルをリストに読み込むと、リストは次のようになります。
[('This', 'is', 'the', 'first', 'line.'),
('This', 'is', 'the', 'second', 'line.'),
('And', 'finally', 'the', 'last', 'line.')]
リストの各要素は、その行のすべての「単語」の追加リストです。スペースで区切られた文字グループとして定義されている単語。
2 リストに変換された後に読み取る特定の行を選択します。
この質問は紛らわしい質問です。あなたはすでにファイルを読んでいます。もう一度読みたいですか?あなたが実際に意味しているのは、「ファイルをリストに読み取った後、ファイルの特定の行を操作するにはどうすればよいですか?」ということだと思います。この質問にお答えします。
ファイルの各行は、リストの特定の要素に対応します。リスト要素には、0 から始まる番号でアクセスします。ファイルの最初の行はl[0]
. 2 番目l[1]
以降はl[-1]
. Python の負のインデックスは、リストの末尾から逆方向にカウントされます。
3 オブジェクトをリストの値に割り当てます
これは、割り当てたいオブジェクトの種類や、オブジェクトを値に割り当てた後にリストで何をしたいかを指定しないため、混乱を招きます。これはあなたの質問を非常に文字通り取る答えです...
l[0] = object()
これにより、ファイルの最初の行を表すタプルを含んでいたリスト要素にオブジェクトが割り当てられます。これを前の回答と組み合わせると、リストの任意の要素にオブジェクトを割り当てる方法を理解できると思います。
4 各行の最初、最後、またはいくつかの値を選択しますか?
これは、それらをどのように選択するかによって異なります。個別に行う場合は、次のようにします。
first_word_of_first_line = l[0][0]
last_word_of_first_line = l[0][-1]
first_word_of_last_line = l[-1][0]
last_word_of_last_line = l[-1][-1]
first_five_words of_second_line = l[1][0:5] # The : is for specifying a range of values
last_five_words_of_first_line = l[0][-5:] # The : with no end means 'until the end'
残念ながら、最初の 2 行の最初の 4 語を取得する方法は次のとおりではありません。
first_four_words_of_first_two_lines = l[0:2][0:4] # DOESN'T WORK!!!
その理由は、リストから値の範囲を取得した結果がリストであり、[0:4]
代わりに がそのリストに適用されるためです。実際に行うことは[0:4]
、結果リストの各要素に適用して新しいリストを作成することです。これを行う方法は次のとおりです。
first_four_words_of_first_two_lines = [x[0:4] for x in l[0:2]]
これにより、次のような新しいリストが得られます (質問 1 の例を参照)。
[('This', 'is', 'the', 'first'),
('This', 'is', 'the', 'second')]
お役に立てば幸いです。私が言ったように、あなたの質問は物事についての混乱を示していると思います。しかし、彼らが何について混乱を示しているのかわからないので、できる限り答えようとしました.