2016-09-30 24 views
0

リストに2つの要素を格納する必要があるとします。配列リストにまだスペースがある場合、最初の項目を配列リストに追加します

私は5つのアイテムを持っている:リンゴ、オレンジ、レモン、パパイヤ、バナナを

私はテキストファイルに保存し、これらの項目、したがって、5行がそこにいます。

ファイルを接続し、1行ずつ読み込みを開始します。私は行を読むたびに、配列内に1つの項目を追加します。配列が2つの項目でいっぱいになるたびに、私はそれを空にして、次の2つの項目を格納します。

最後の項目に達したらどうすればよいですか?私はまだ1つの余分な場所を持っており、私は再び1番目のアイテムを保存する予定ですか?

例:

1st time store 
apple, orange, 

2nd time store 
lemon, papaya, 

3rd time store 
banana, apple 

4th time store 
orange, lemon 

ループ........

私の現在のコードはそうできません。

def function(): 
    fo = open("1.txt", "r") 
    print "Name of the file: ", fo.name 
    sent_count=0 
    ele = [] 
    while True: 
     lines = fo.readlines() 
     for line in lines: 
      sent_count+=1 
      if(sent_count%4!=0): 
       ele.append(lines[sent_count-1]) 
      if(sent_count%4==0): 
       ele.append(lines[sent_count-1]) 
       for i in ele: 
        print i 
       ele = [] 
       print(sent_count) 
       time.sleep(1) 

答えて

1

実際にあなたがあなたのele配列をクリア避けることができます。 collectionのような便利な組み込みモジュールがいくつかあります。カスタムアレイを作成することができます。配列のmaxlenを設定することができます。さらに、左/右を設定することもできます。

d = collections.deque([], maxlen=2) 

は、その配列dがinly 2項目を含むことができ、我々は1以上を追加した場合、それは我々が右側(デフォルト)で追加されることを意味します。 さらに、ファイルを再オープンする必要はありません(データが動的に変更されていない場合)。あなたがそれを開いたら、 `itertools 'の助けを借りてその行を繰り返すことができます。それは素晴らしい機能を満載しています。これらのモジュールを見ることをお勧めします。

for i in itertools.repeat([1,2,3], 10): 
print(i) 

は、イテレータ[1,2,3]を10回印刷します。

全体的なコードはこのように見えますが、最適化してより効率的なコードを書くことができると思います。

import itertools 
import collections 

data = ['apple', 'orange', 'lemon', 'papaya', 'banana'] 
d = collections.deque(maxlen=2) 

for i in itertools.repeat(data, 10): 
    for item in i: 
     d.append(item) 
     print(d) 

試してみてください。がんばろう! ちょうどいくつかの変更を加えることで、python 2.7のために動作します。 print機能のほかにほとんど違いはありません。 python 2.7には、これらのモジュールもあります。

+0

返信ありがとうございました 今質問があります 2の配列の最大スペースを乱数に変更します。 これは上記の理論で行うことができますか? 例: 第一は リンゴ、オレンジを読んで、 第二は レモンを読んで、 第三は、私はそれを –

+0

を読みます申し訳ありませんが理解できません、あなたはこれを深く説明できますか?コーディング部分で説明すれば良いでしょう。もう一度ここに申し訳ありません: '( –

+0

チェックする必要が好笑不@ パパイヤ、バナナ、リンゴ 第四読み取り オレンレモンパパイヤ ループ –

関連する問題