Python for循环可以修改循环变量吗?怎么修改,python可以修改,如题.想用python来
Python for循环可以修改循环变量吗?怎么修改,python可以修改,如题.想用python来
如题.想用python来做个最长连续递增子序列的函数,但发现在用for i in range(0,len(seq))的时候,在循环体不能修改i的值,请问有什么方法可以修改?
你应该用列表解析等方法提前做好需要的修改,列表解析性能非常好,而for只用来做别的操作。
最长连续递增子序列为嘛要修改i呢
for i in range(len(s1)): for j in range(len(s2)): if s1[i] == s2[j]: f[i][j] = f[i-1][j-1] + 1 else: f[i][j] = max(f[i-1][j],f[i][j-1]);
代码随手写的,应该没错
python for 循环不能修改循环变量的原因是,range()象是一个迭代器,它只会输出信息,而不能修改迭代器的内容。python iterator的C结构是一个指针和一个对象列表。修改循环对象的值是C的思维方式,最好不要用在写python代码上。
严重不建议修改迭代变量,很多时候用它来做随机访问是不可能的。有很多其他方法可以做这个事情,用python的for-comprehension和一些reduce方法可以高效、稳定的解决。
你可以修改i的值,但每次循环之后for语句又会重新对i赋值,所以你问的问题不在于能否修改i,而是修改迭代器的行为,答案是不能。
你可以用while,或者,用个生成器:
def incSeq(seq): start = 0 for i in xrange(1, len(seq)): if seq[i] < seq[i-1]: yield start, i - start start = imaxIncSeq = reduce(lambda x,y: x if x[1]>y[1] else y, incSeq(seq))
得到最长递增子串长度及起始位置,时间复杂度O(n).
修改for语句,改成用循环语句。
i = 0length = len(seq)while i < length: #just do it i += 1
为什么要修改循环变量的取值,这样做很可能会导致问题。建议用其他方法来实现,比如楼上几位提到的while循环。
编橙之家文章,
相关内容
- Python语言算是强类型语言吗,python语言算是,以为作为脚
- 办公环境中哪款应用工具软件通用性扩展性最强?,哪
- Python即时消息程序用Flask框架怎么写,pythonflask,举例:
- 想把print输出后的空格删除怎么做,print输出空格删除
- 企业应用python web框架哪种使用比较多,企业应用pytho
- 求好的Python源码加密工具推荐,Python源码加密工具,PH
- 新手学习python从哪个版本开始学习比较好,新手python
- Python深入学习高级教材求推荐,python深入学习教材,特别
- 运行pythonweb程序在nginx 启动后 80 端口无法访问,pytho
- virtualenv创建项目可以指定python版本号吗?如何指定,v
评论关闭