我想这样做:
while list:
for blah in blah:
things
list.remove(min(list))
这会循环,直到列表中的所有项目都被删除了吗?因为我有我的代码,它只是循环[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
答案 0 :(得分:1)
有什么问题?
您的代码应该正常工作
>>> l=[1,2]
>>> while l:
... print l
... l.remove(min(l))
...
[1, 2]
[2]
答案 1 :(得分:1)
也许你正在寻找这样的东西?
while len(list) > 0:
for blah in blah:
things
list.remove(min(list))
答案 2 :(得分: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
答案 3 :(得分:1)
您需要使用bits
中的单独变量来保存每条数据。 bits
会在整个代码中重置,因此我建议您使用all_bits
之类的内容,并将bits
更改为min_addr_bits
。此外,您需要确保每个非空行都将位添加到all_bits
。根据要求发布示例。