【问题标题】:For loop over increasing range in a tableFor循环在表中增加范围
【发布时间】:2017-05-10 13:59:08
【问题描述】:

如果范围增加,我在调用 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, []),表的长度会增加,所以当循环到达行列表大于 10 的第 49 行时,它的实际行号变为大于循环的范围。

如何让循环知道范围增加了?目前,只有不超过 50 的行具有 if 条件

我尝试在循环之前添加一个计数变量:

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 循环中的某种递归函数可以不断轮询表的长度?我不太确定。

谢谢

【问题讨论】:

标签: python python-2.7 ipython


【解决方案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

【讨论】:

  • 是的,这正是。谢谢!也有更好的方法。
【解决方案2】:

您可以为此使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 2018-10-18
    • 2018-12-20
    • 2022-12-16
    • 2021-10-25
    • 2011-09-07
    相关资源
    最近更新 更多