2

私はこれをしたい:

while list:
    for blah in blah:
        things
    list.remove(min(list))

リスト内のすべてのアイテムが削除されるまで、これはループしますか? 私は自分のコードを持っているので、[リスト]回ループしてから関数から戻ります。リストのすべての項目がなくなるまで続くループが必要です。

最後の反復まで (for ループ内で) 何も処理されないことに注意してください。

リクエストにより、実行中のアルゴリズム全体:

def parsexlsx(address):
    bits = [] 
    i = 0
    while address:
        min_address = False
        for row in ws.iter_rows(row_offset=4,column_offset=3):
            c = row[2]
            d = row[3]
            if not d.internal_value:
                if min_address:     #we set it to true, then kept going until blank row
                    break           #bits is what you want it to be now
                bits = []           #reset bits every time we hit a new row
                continue            #this will just skip to next row

            for bits_cell in row[4:]:
                if bits_cell.internal_value:
                    bits.append(bits_cell.internal_value)
            if c.internal_value:
                if c.internal_value == min(address):
                    min_address = True
        address.remove(min(address))

    print bits
    return bits 
4

4 に答える 4

1

どうしたの?

コードは機能するはずです

>>> l=[1,2]
>>> while l:
...     print l
...     l.remove(min(l))
... 
[1, 2]
[2]
于 2012-06-25T19:54:12.770 に答える
1

bitsすべてのデータを保持するには、別の変数を使用する必要があります。bitsはコード全体でリセットされるため、 のようなものを使用してall_bitsに変更bitsすることをお勧めしmin_addr_bitsます。また、空白ではないすべての行について、ビットを追加する必要がありますall_bits。リクエストに応じて投稿された例。

于 2012-06-26T00:41:02.323 に答える
1

おそらく、あなたはこのようなものを探していますか?

while len(list) > 0:
    for blah in blah:
        things
    list.remove(min(list))
于 2012-06-25T19:54:37.660 に答える
1

はい、文字列foobarが 10 回印刷されていることがわかります。これは、A の長さに等しいです。

>>> A=[1,1,2,3,3,3,4,5,6,6]
>>> while A:
     print('foobar')
     A.remove(min(A))


foobar
foobar
foobar
foobar
foobar
foobar
foobar
foobar
foobar
foobar
于 2012-06-25T19:57:01.943 に答える