【发布时间】:2017-06-04 01:43:36
【问题描述】:
编辑:
程序的期望行为是找到具有增加趋势的数字序列,所以我想从ks list 生成一个这样的列表:
desiredList=[[97,122],[98,111],[98,101,103,103,104]]
我有以下内容,我的目标是根据列表的长度运行 for 循环,列表长度在 for 循环本身内部发生变化。 Python 仅考虑 for 循环之前的长度,当列表的长度在循环中更改时,它仍然采用循环之前的旧值。代码如下:
ks=[97,122,111,98,111,98,101,103,103,104,97]
splitLine=2
counter=[]
for i in range(0,len(ks)):
a=ks[i:splitLine]
while len(a)>1:
for j in range(0,len(a)):
m=j
n=j+1
if(a[m]-a[n]<=0):
c=c+1
k=splitLine+c-1
a.append(ks[k]) #When append happens, the for loop still takes the older value of len(a) instead of new value
else:
a.pop(-1)
counter.append(a)
splitLine=splitLine+1
a=[]
break
【问题讨论】:
-
您解释了
for循环的行为。但是您要解决的问题陈述不清楚。请编辑问题以解释所需的行为。还要提到示例输入和所需的输出 -
除了您声明的问题之外,您的代码中还有几个问题。
a[m]和a[n]是字符串,你首先在哪里定义c? -
你想做什么?在迭代时修改列表几乎总是一个坏主意
-
我已经编辑了这个问题,希望现在更清楚了。
标签: python for-loop conditional