2017-03-31 7 views
1

私は整数のリストを持っていて、QTableWidgetには33行のデータが入っています。リストの値を範囲として使用するにはどうすればよいですか?

私のリストは、(QTableWidgetの行に対応する)のようである:

my_list = [15, 14, 1, 2, 1] 

I行の数でテーブルから情報を抽出したいです。

my_list = [15, 14, 1, 2, 1] 

for row in range(15): 
    # Do something 

for row in range(15,29) 
    # Do something 

for row in range(29,30) 
    # Do something 

... 

は、例えば、私は現時点でだから、私が使用している等最初の15行は、次の14行は、次の1行のテーブルをループしたいですリスト内の値(および項目数)が変更できるので、これを行う最も効率的な方法は何ですか?

答えて

1

あなたのペアがrange()のためにそれらを使用し得ることができるこの方法:今

import numpy as np 

my_list = [15, 14, 1, 2, 1] 

top = list(np.cumsum(my_list)) 
bottom = list(np.subtract(np.cumsum(my_list),my_list)) 

pairs = zip(bottom,top) 
ranges = iter([range(x[0], x[1]) for x in pairs]) 

、あなただけ行くことができます:

for item in next(ranges): 

EDIT#1

あなた# Do something場合あなたはいつも異なっています:

for row in next(ranges): 
    # Do something 

for row in next(ranges): 
    # Do something 

EDIT#2

あなたあなた#Do somethingはいつもあなたが行くことができると同じである場合:

for item in my_list: 
    for row in next(ranges): 
     # Do something 
+0

Iのインデックスを使用して、それを試すことができます次の(範囲)の項目に 'を使用します:'、これは最初の15項目に対してのみ行います。私は他の何かを使用するはずですか? – Joseph

+0

編集を参照してください。私はあなたが各範囲の操作を変更していることを理解しました。 – zipa

+0

ああ、あなたが意味することを見て、ありがとう!その質問では、5つの項目をリストに書いていましたので、 '行を次の(範囲):' 5回使用する必要があります。リストに3つの項目がある場合は、 'for row in next(ranges):'を3回使用する必要があります。基本的に私はGISプラグインを実行していますので、リスト内の項目の数はさまざまです。次回(行)に行を追加する必要なしに、この変更に対応する方法がありますか:x回ですか?私。それは単一のループで行うことができますか? – Joseph

1

あなたがリスト

for row in range (my_list[0]): 
    print "abc" 
for row in range (my_list[1]): 
    print "bc" 
for row in range (my_list[2]): 
    print "ac" 
for row in range (my_list[3]): 
    print "amc" 
for row in range (my_list[4]): 
    print "c" 
+0

あなたの答えをありがとうが、アイデアは、リスト内の項目の数を変更することができます(つまり、私は '5'を示しているが、' 3'でもあります)。私は_hardcoding_の代わりにより一般的な方法を探しています:) – Joseph

関連する問題