用于循环增加表中的范围

时间:2017-05-10 13:59:08

标签: python python-2.7 ipython

如果范围正在增加,我遇到调用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循环中有某种递归函数来不断轮询表长度?我不太确定。

由于

2 个答案:

答案 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