相关疑难解决方法(0)

python:重启循环

我有:

for i in range(2,n):
    if(something):
       do something
    else:
       do something else
       i = 2 **restart the loop
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.有没有办法重新启动该循环?

谢谢

python loops

20
推荐指数
3
解决办法
8万
查看次数

从列表中删除相邻的重复元素

谷歌Python类| 清单练习 -

给定一个数字列表,返回一个列表,其中所有相邻的==元素已减少为单个元素,因此[1,2,2,3]返回[1,2,3].您可以创建新列表或修改传入列表.

我使用新列表的解决方案是 -

def remove_adjacent(nums):
  a = []
  for item in nums:
    if len(a):
      if a[-1] != item:
        a.append(item)
    else: a.append(item)        
  return a
Run Code Online (Sandbox Code Playgroud)

这个问题甚至暗示可以通过修改传入的列表来完成.但是,python文档警告不要在使用for循环迭代列表时修改元素.

我想知道除了迭代列表之外我还能尝试什么,以完成这项工作.我不是在寻找解决方案,但也许是一个可以带我走向正确方向的提示.

UPDATE

使用建议的改进更新了上述代码.

使用建议的提示使用while循环执行以下操作 -

def remove_adjacent(nums):
  i = 1
  while i < len(nums):    
    if nums[i] == nums[i-1]:
      nums.pop(i)
      i -= 1  
    i += 1
  return nums
Run Code Online (Sandbox Code Playgroud)

python

15
推荐指数
4
解决办法
2万
查看次数

如何在python中重启"for"循环?

我怎么能在python中这样做:

x = [1,2,3,4,5,6]
for i in x:
    if i == 4:
       -restart the loop from beginning-
    else:
        print i
Run Code Online (Sandbox Code Playgroud)

所以这里它将打印到4然后重复循环

python for-loop python-2.7

0
推荐指数
1
解决办法
2万
查看次数

在python中重新启动for循环的迭代

如果我收到异常,我正在寻找重启迭代.(...它正在从服务器读取数据,偶尔会得到间歇性的错误代码,在重试时不会重复).

 with open(input, 'rb') as f:
     r = unicodecsv.reader(f)

 for row in r:

    code to request some data from server

    if response_code == 200:
       code to process response
    else:
       want to restart the iteration for the current row
Run Code Online (Sandbox Code Playgroud)

如果我正在使用while循环,这种事情显然是显而易见的(例如,不要增加数字),但鉴于我在for循环中迭代行,不能想到一种强制重新循环的方式当前迭代的内容.

虽然有很多类似的声音标题帖子(例如如何在python中重启"for"循环? ,Python - 重启for循环的方法,类似于while循环的"continue",python:重启循环 )每个我发现/读取的东西似乎得到了不同的东西(例如,当到达结束时如何重新启动,而不是在某种情况发生时重新启动迭代).

[Python 2.7]

python python-2.7

0
推荐指数
1
解决办法
1329
查看次数

标签 统计

python ×4

python-2.7 ×2

for-loop ×1

loops ×1