都是血淋淋的经验啊!(Python)
来源:互联网 发布:苹果6怎么开4g网络 编辑:程序博客网 时间:2024/05/16 12:19
20160105
实时改变的变量:最好单独分配一个方法,将其当做参数传入——变化即使用参数;
*一定要注意那些实时变化的东西!可能会带来隐患
eg:
def sortNew(self,bugdetailist): sorted = [] for i in range(len(bugdetailist)): if bugdetailist[i][4] == 'new': sorted.append(bugdetailist[i]) bugdetailist.pop(i) bugdetailist = sorted + bugdetailist return bugdetailist
当调用这个方法的时候,会报错:IndexError: list index out of range,很容易发现每一次循环的时候(满足了 if )bugdetailist 会消除掉一个元素,然而似乎
for i in range(len(bugdetailist)):中的 len(bugdetailist) 并不会发生变化依然执着的保持 “原bugdetailist” 的长度,但实际的列表已经缩小了,所以超出了长度。
那么解决方案就是——
def sortNew(self,bugdetailist): sorted = [] for i in range(len(bugdetailist)): newindex = self.findNew(bugdetailist) sorted.append(bugdetailist[newindex]) bugdetailist.pop(newindex) bugdetailist = sorted + bugdetailist return bugdetailist def findNew(self,bugdetailist): i = 0 for i in range(len(bugdetailist)): if bugdetailist[i][4] == 'new': return i return i #notice there must return one value将变化的每次循环都会列表当做参数,单独使用一个方法来处理,一对一(一个变化一个方法)。
尽管 i 还是越界了,但是越界的 i 却没有被使用了。
将变化的每次循环都会列表当做参数,单独使用一个方法来处理,一对一(一个变化一个方法)这样每一次的变化都有单独对应方法解决就会好得多。
0 0
- 都是血淋淋的经验啊!(Python)
- 用“血淋淋”的事实换来的系统安全经验
- 血淋淋的教训(持续更新)
- 办事原则(都是经验啊)
- 这都是经验啊!
- 百度秋招二轮面试——血淋淋的经验分享
- 百度秋招二轮面试——血淋淋的经验分享
- 趣事儿~?、血淋淋的囧~~~
- 《蜗居》100句台词 血淋淋的经典
- eclipse插件安装!~血淋淋的教训!
- tornado中设置cookie时的unicode问题(经验都是慢慢积累的)
- 工作经验都是什么经验?
- 学习Python的经验
- 金三银四?有工作经验的,一年四季都是旺季!没有经验的,一年四季,都是淡季!
- 从菜鸟蜕变成高手血淋淋的总结
- 猛料突爆 云计算理论与现实血淋淋的对白
- 2018 秋招 百度二轮面试---血淋淋的经历写实
- 都是python写的渗透测试工具
- tomcat配置单向/双向https认证
- 网站缓存数据到tomcat服务器
- my leetcode#1 #2 #3 #4 #6 #7 #8
- Android下setLatestEventInfo警告、Handler警告、SimpleDateFormat警告
- 一张图了解Git
- 都是血淋淋的经验啊!(Python)
- java.toString() ,(String),String.valueOf的区别
- 关于CCTableView
- C++11多线程(八):std::condition_variable 详解
- js计算时间间隔
- CocoaPods使用详细说明
- iOS判断邮箱格式是否正确
- mac 配置jdk 环境变量(No Java runtime present, requesting install.)
- Apache Sentry手动安装、使用手册