2

私は約 2 週間スクリプトを作成しており、ファイルからの読み取りについて学習したばかりです。

私がやりたいことは、元のリストから他のすべてのエントリを取得して、新しいリストに保存することです。これが最善の方法ですか?

with open("test.txt",mode="r") as myfile:
File = myfile.read().splitlines()

Username = []

for i in range (len(File)):
    if File.index(File[i])%2 == 0 or File.index(File[i]) == 0:
        Username.append(File[i])
print(Username)

これまでのところ、Python を約 10 時間しか勉強していないことを覚えておいてください。

4

2 に答える 2

5

より少ないコードで同じことを達成するには、少なくともいくつかの方法があります。

スライス表記

Python には、スライス表記と呼ばれる配列の n 番目の要素ごとに反復する方法があります。ループ全体を次の行に置き換えることができます

Username.extend(File[0::2])

これが基本的に意味することは2、インデックスから始まるすべての要素を取得して配列0に追加することです。Username

range()機能_

range()開始、終了、およびステップを指定できる別のバージョンの関数を使用することもできます。

for i in range(0, len(File), 2):
    Username.append(File[i])

range()関数はここに文書化されています

于 2013-08-09T21:26:17.993 に答える
1

リスト内包表記を使用できます:

input_file:

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10

パイソン:

>>> with open("input_file") as f:
...     alternates = [line for i, line in enumerate(f) if not i % 2]
... 
>>> alternates
['Line 1\n', 'Line 3\n', 'Line 5\n', 'Line 7\n', 'Line 9\n']

さらにenumerate()読む:組み込み関数.

于 2013-08-09T21:21:11.197 に答える