Python 将嵌套的for循环转换为嵌套的while循环

Python 将嵌套的for循环转换为嵌套的while循环,python,for-loop,while-loop,Python,For Loop,While Loop,上面的代码获取给定列表的所有元素并将它们除以2,效果很好,但是为了练习,我尝试将其转换为while循环,但是由于某些原因,我没有收到错误,但是代码一直在运行,我不得不强制停止它 my_data = [4, 8, 15, 16, 23, 42] index = 0 for item in my_data: k = 0 for i in range(2, item+1): if (i % 2 == 0): k += 1 my_data[

上面的代码获取给定列表的所有元素并将它们除以2,效果很好,但是为了练习,我尝试将其转换为while循环,但是由于某些原因,我没有收到错误,但是代码一直在运行,我不得不强制停止它

my_data = [4, 8, 15, 16, 23, 42]
index = 0
for item in my_data:
    k = 0
    for i in range(2, item+1):
        if (i % 2 == 0):
            k += 1
    my_data[index] = k
    index += 1
print(my_data)
i=0
当我
这就是我试图实现的方法,就我而言,它似乎不起作用。如果有人能为我澄清,我将不胜感激。提前谢谢。

第5行:

i = 0
while i < len(my_data):
    j = 2
    while j < i+1:
        if j % 2 == 0:
            j += 1
    my_data[i] = j
    i += 1
print my_data
i==3
j==3
时,if语句被忽略<代码>j
不能增加。它将永远循环,因为第5行的停止标准是
j:

i = 0
while i < len(my_data):
    j = 2
    while j < i+1:
        if j % 2 == 0:
            j += 1
    my_data[i] = j
    i += 1
print my_data

i==3
j==3
时,if语句被忽略<代码>j
不能增加。它将永远循环,因为停止标准是
j第二个while循环仅在j是pair时向前移动,如果j不是pair(因为j仅增加1),while循环将永远循环。
用j替换k犯了一个小错误,应该继续使用k

if j % 2 == 0:
i=0
当我
第二个while循环仅在j为pair时向前移动,如果j不是pair(因为j仅增加1),while循环将永远循环。 用j替换k犯了一个小错误,应该继续使用k

if j % 2 == 0:
i=0
当我
如果您只是尝试使用分割列表中的每个项目,同时也尝试使用此方法

i = 0
while i < len(my_data):
    j = 2
    k = 0
    while j < i+1:
        if j % 2 == 0:
            k+=1
        j += 1
    my_data[i] = k
    i += 1
print my_data

如果您只是想用while来划分列表中的每个项目,那么您也可以这样做

i = 0
while i < len(my_data):
    j = 2
    k = 0
    while j < i+1:
        if j % 2 == 0:
            k+=1
        j += 1
    my_data[i] = k
    i += 1
print my_data


.
my_data=[i//2 for i in my_data]
为什么要使用这么复杂的逻辑?@AlbinPaul因为我不允许使用除法,否则就很容易了哈哈:S@Unix右移运算符呢?@AlbinPaul问题是,我必须将这段代码转换成MIPS 32,它更难用于MIPS中的循环,这就是为什么我想使用while循环,我也不知道如何将leftshift运算符转换为MIPS,欢迎提供任何提示。
my_data=[I//2 for I in my_data]
为什么要使用所有这些复杂的逻辑?@AlbinPaul因为我不允许使用除法,否则就很容易了哈哈:S@Unix右移运算符如何?@AlbinPaul问题是,我必须将这段代码转换为MIPS 32,这对于MIPS中的循环很难使用,所以这就是为什么我想使用while循环,而且我不知道如何将左移运算符转换为MIPS,任何提示都很有用,非常感谢,但是你建议我在其他地方补充什么,我现在就给你正确的答案@在其他情况下,添加j+=1 ithink@Unix我不明白你的代码。我想知道为什么你需要2个嵌套的
来将列表除以2?你所需要的只是一个
,或者一个更具python风格的方式,使用
列表理解
[x/2 for x in my_data]
@enamoria查看我对AlbinPaul的上述评论,你就会明白我为什么这么做了,非常感谢,但你建议我在其他地方补充什么,我现在就给你正确的答案@在其他情况下,添加j+=1 ithink@Unix我不明白你的代码。我想知道为什么你需要2个嵌套的
来将列表除以2?你所需要的只是一个
,或者一个更具python风格的方式,使用
列表理解
[x/2 for x in my_data]
@enamoria查看我对AlbinPaul的上述评论,你就会明白我为什么这样做了。我感谢你的努力,但是我不允许使用除法,因此我无法实现这一点!我很感激你的努力,但是我不允许使用除法,因此我不能执行此操作!