如果范围正在增加,我遇到调用for循环的问题。
我有一张桌子(清单清单):
for i in range(0, len(table)):
if len(table[i]) > 10:
new_row = table[i][11:]
table.insert(i+1, [])
for val in new_row:
table[i+1].append(val)
例如表的长度是50,并且有许多行,其中我有超过10个值。在创建每个新行之后(table.insert(i + 1,[]),表的长度增加,因此当循环到达第49行,其中行列表大于10时,它的实际行号变为大于循环的范围。
如何让循环知道范围增加?目前,只有最多50行才能应用条件
我尝试在循环之前添加一个count变量:
count = 0
for i in range(0, len(table)+count):
if len(table[i]) > 10:
new_row = table[i][11:]
table.insert(i+1, [])
for val in new_row:
table[i+1].append(val)
count = count + 1
这似乎没有帮助!也许在for循环中有某种递归函数来不断轮询表长度?我不太确定。
由于
答案 0 :(得分:1)
这是你在找什么?
idx = 0
while True:
try:
lst = table[idx]
except IndexError:
break
if len(lst) > 10:
table.insert(idx+1, lst[10:])
# You probably want to cut current lst here as well?
# table[idx] = lst[:10]
idx += 1
答案 1 :(得分:0)
你可以使用while循环来实现这个目的!
count = 0
i=0 #initial value
while table: #your iterating loop until table holds a value!
if len(table[i]) > 10:
new_row = table[i][11:]
table.insert(i+1, [])
for val in new_row:
table[i+1].append(val)
count = count + 1
i+=1 #increment by 1