python 面试题总结
来源:互联网 发布:淘宝网拍卖车辆提档 编辑:程序博客网 时间:2024/04/30 15:07
python 面试题总结
2012-10-13 11:27:37
Python面试题:请写出一段Python代码实现删除一个list里面的重复元素:
一、自己的思路:
遍历列表,发现元素不同,添加到新列表C中。
最后将C列表赋值给原列表
def select(a):
i=None
c=[]
for b in a:
if i!=b:
c.append(b)
i=b
a[0:]=c
自我总结:
1.
迭代器的迭代方式(按索引迭代)
for b in c:
print str(b)
这种迭代方式是按索引来的。
如果在迭代过程中对原列表进行操作,会产生奇怪的记过。
例子:
>>> c=[1,2,3,4]
>>> for b in c:
print "before:"+str(b)
c.remove(b)
print "after:"+str(b)
before:1
after:1
before:3
after:3
从这个例子能学到:如果在迭代时删除某个元素,会导致列表改变,但是迭代器依旧以原来的索引顺序迭代,这会导致数据错位,引起bug
2.编写循环逻辑注意点:
一般只是简单的for循环是比较简单的,但是如果伴随着相应变量的变更,变量的读取,就会比较容易出错。
2.1怎么减小错误呢?.最简单的方法,画图,一个循环一个图,就比较容易想清楚了。
2.2怎么提高编程能力?特别面对循环时?
首先,是积累,脑子里需要建立一个知识库。(类似的问题该怎么解决)
其次,是在编程时,用到积累的知识需要和环境结合,可能思维会乱,可以画图
最后,就是归纳第二步的思维,这样就能写出程序了
3.参数传递,与值的改变
如果a引用了一个对象,那么将a传入select函数。在select改变行参的值不影响外界a的值。
只有改变a所指向内存的值,才能改变a的值
4.当对数据进行操作时,需要考虑此操作是否会影响以后的操作。
二:网上比较好的答案:
思路:从后往前,遍历,这样删除元素此也不会影响以后遍历时取值的操作
代码:
def sort_select(a):
if not a: print 'there is nothing in a'
else:
temp = a[-1]
for i in range(len(a)-2,-1,-1):
if a[i]==temp:del a[i]
else:temp=a[i]
总结:
range函数的起始于结束:
for i in range(100):
print str(i)
输出结果:打印从1到99
for i in range(5,-1,-1):
print str(i)
输出结果:打印从5到0
碰到这种问题的经验:
1.要用循环
2.因为是对列表删除操作,又要遍历整个列表,所以从后往前遍历比较好,就算删除了后面的元素,也不会影响前面元素的顺序
3.首先一个中间值(temp),temp等于该列表的最后一个值。
将temp与从后往前遍历来的值对比
如果 相等,就删除
否则 就 将值赋给temp,一边下次循环比较
一、自己的思路:
遍历列表,发现元素不同,添加到新列表C中。
最后将C列表赋值给原列表
def select(a):
i=None
c=[]
for b in a:
if i!=b:
c.append(b)
i=b
a[0:]=c
自我总结:
1.
迭代器的迭代方式(按索引迭代)
for b in c:
print str(b)
这种迭代方式是按索引来的。
如果在迭代过程中对原列表进行操作,会产生奇怪的记过。
例子:
>>> c=[1,2,3,4]
>>> for b in c:
print "before:"+str(b)
c.remove(b)
print "after:"+str(b)
before:1
after:1
before:3
after:3
从这个例子能学到:如果在迭代时删除某个元素,会导致列表改变,但是迭代器依旧以原来的索引顺序迭代,这会导致数据错位,引起bug
2.编写循环逻辑注意点:
一般只是简单的for循环是比较简单的,但是如果伴随着相应变量的变更,变量的读取,就会比较容易出错。
2.1怎么减小错误呢?.最简单的方法,画图,一个循环一个图,就比较容易想清楚了。
2.2怎么提高编程能力?特别面对循环时?
首先,是积累,脑子里需要建立一个知识库。(类似的问题该怎么解决)
其次,是在编程时,用到积累的知识需要和环境结合,可能思维会乱,可以画图
最后,就是归纳第二步的思维,这样就能写出程序了
3.参数传递,与值的改变
如果a引用了一个对象,那么将a传入select函数。在select改变行参的值不影响外界a的值。
只有改变a所指向内存的值,才能改变a的值
4.当对数据进行操作时,需要考虑此操作是否会影响以后的操作。
二:网上比较好的答案:
思路:从后往前,遍历,这样删除元素此也不会影响以后遍历时取值的操作
代码:
def sort_select(a):
if not a: print 'there is nothing in a'
else:
temp = a[-1]
for i in range(len(a)-2,-1,-1):
if a[i]==temp:del a[i]
else:temp=a[i]
总结:
range函数的起始于结束:
for i in range(100):
print str(i)
输出结果:打印从1到99
for i in range(5,-1,-1):
print str(i)
输出结果:打印从5到0
碰到这种问题的经验:
1.要用循环
2.因为是对列表删除操作,又要遍历整个列表,所以从后往前遍历比较好,就算删除了后面的元素,也不会影响前面元素的顺序
3.首先一个中间值(temp),temp等于该列表的最后一个值。
将temp与从后往前遍历来的值对比
如果 相等,就删除
否则 就 将值赋给temp,一边下次循环比较
- python 面试题总结
- Python面试题总结
- python面试题总结
- Python面试题总结
- Python面试题总结
- 12道 Python面试题总结
- 总结python中基本的面试题
- 网络上总结python中的面试题
- 【Python环境】12道 Python面试题总结
- 面试题总结-搜狐手机网Python开发工程师
- Python面试题
- python面试题
- Python面试题集合
- Python面试题集合
- python面试题
- Python面试题集合
- python面试题大全
- python面试题
- Python读写Excel文件的实例
- Python性能鸡汤
- python面试题
- 面向接口编程2
- Python面试题集
- python 面试题总结
- 华为python面试题
- facebook presto安装
- Python面试集锦
- 平衡点问题
- 淘宝面试题猜数字游戏
- 微软、google、雅虎、百度等各大著名公司的经典面试题的python实现!
- Python 面试题 - 堆排序 & 演算过程
- OPENCV中cvFindContours函数说明