Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将while循环转换为for循环_Python_Loops - Fatal编程技术网

Python 将while循环转换为for循环

Python 将while循环转换为for循环,python,loops,Python,Loops,将以下while循环转换为for循环。您的代码应该编写为不需要修改return语句。允许您在while循环正确之前更改代码。字符串列表是一个字符串列表,其中至少包含15个字符串实例'***' 我不知道那j在那里做什么 j = [i for i,x in enumerate(string_list) if x=='***'][15] return j 懒惰版的灵感来自Peter和astynax的评论 from itertools import islice j = next(islice((i

将以下while循环转换为for循环。您的代码应该编写为不需要修改return语句。允许您在while循环正确之前更改代码。字符串列表是一个字符串列表,其中至少包含15个字符串实例
'***'

我不知道那
j
在那里做什么

j = [i for i,x in enumerate(string_list) if x=='***'][15]
return j
懒惰版的灵感来自Peter和astynax的评论

from itertools import islice
j = next(islice((i for i,x in enumerate(string_list) if x=='***'), 15, None))
return j
懒惰版的灵感来自Peter和astynax的评论

from itertools import islice
j = next(islice((i for i,x in enumerate(string_list) if x=='***'), 15, None))
return j

我假设您打算编写
string\u list[j]='***'
而不是
string\u list[j]='***'
。我还将假定
I
已初始化为
0

i, j = 0, 0 
while i < 15: 
  if string_list[j] == '***': 
    i += 1 
  j += 1 
return j 

我假设您打算编写
string\u list[j]='***'
而不是
string\u list[j]='***'
。我还将假定
I
已初始化为
0

i, j = 0, 0 
while i < 15: 
  if string_list[j] == '***': 
    i += 1 
  j += 1 
return j 


提示:我并不总是增加,for循环不会循环15次,循环次数可能会比完全关闭的代码格式循环次数多得多,如果没有它,代码格式就没有什么用处了。@pedantic,家庭作业标记是可选的,不是必需的。请看[我们不会为你做作业],其中明确指出这是海报的选择(并提供关于如何张贴作业问题的建议)。@Hamza请看基思的答案——你不可能得到比这更有益的暗示。想想什么时候
i
递增,什么时候
j
递增。它们不一样。
如果string_list[j]='***':
将给出一个错误。您的意思一定是
=='***':
。提示:我并不总是增加,for循环不会循环15次,它可能会循环更多次。如果代码格式完全关闭,则几乎无法发挥作用。@pedantic,作业标记是可选的,不是必需的。请看[我们不会为你做作业],其中明确指出这是海报的选择(并提供关于如何张贴作业问题的建议)。@Hamza请看基思的答案——你不可能得到比这更有益的暗示。想想什么时候
i
递增,什么时候
j
递增。它们不一样。
如果string_list[j]='***':
将给出一个错误。你的意思一定是
='***':
一个懒惰的版本:
j=next(j代表计数,j在枚举中(i代表i,x在枚举(字符串列表)中,如果x='***'))如果j==15)
我不知道当别人回答时你们为什么这么紧张,这是我发布这个问题的唯一原因,因为我不知道如何处理或写这个问题,惰性变量
j=list(itertools.islice((i代表i,如果x='***',则在枚举(字符串列表)中为x),15,15+1))
有人能向我解释一下为什么列表理解版本的末尾有一个[15]吗?它看起来像终止条件,但我从未见过列表理解是这样写的。我试着测试它,但得到了索引错误(超出范围)。@Shaken\u not\u stive,
[15]
不是列表理解的一部分,它只是从列表中取出第16项。如果你只运行LC而不运行
[15]
,你会看到列表中的项目少于16项,因此你会得到一个索引错误。一个懒惰的版本:
j=next(j代表计数,j代表枚举(i代表i,x代表枚举(string_list)如果x='***')如果j==15)
我不知道当别人回答时你们为什么这么紧张,这是我发布这个问题的唯一原因,因为我不知道如何处理或编写这个问题,惰性变量
j=list(itertools.islice((i代表i,x在enumerate(string_list)中,如果x='***',15,15+1))
有人能向我解释一下为什么列表理解版本的末尾有一个[15]吗?它看起来像终止条件,但我从未见过列表理解是这样写的。我试着测试它,但得到了索引错误(超出范围)。@Shaken\u not\u stive,
[15]
不是列表理解的一部分,它只是从列表中取出第16项。如果只运行LC而不运行
[15]
,则会看到列表中的项目少于16项,因此会出现索引错误。
for s in string_list:
  if s == `***`:
    # keep track of how many times this has happened
    # break if you've seen it happen 15 times
  j += 1
return j