1.判断是否是回文
def is_back(s): return s[::-1]==(s if s.strip() else False) print(is_back('上海自来水来自海上')) print(is_back('山东落花生花落东山')) print(is_back('山西悬空寺空悬西山')) print(is_back('随随便便写的'))
2.看下面这段代码, 具体是什么意思呢
1 nums=[1,1,1,2,2,3,4,5,6,6,7,8] 2 for n in nums: 3 if n%2==0: 4 nums.remove(n) 5 print(nums)
如果光看这段代码觉得print出来的结果应该是把除2余0的数删除,name结果应该是1,1,1,3,5,7,8,但运行结果如下:
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /Users/panyang/PycharmProjects/untitled/day9/111.py [1, 1, 1, 2, 3, 5, 6, 7] Process finished with exit code 0
好像和我们想象的并不一样,这是什么原因呢,因为在删除数组元素的过程中数组元素的下标也改变了,取完下标为3的之后下一个元素的下表变成了3,所以下标就不准了.删除的元素也就不准了.
所以循环列表的时候不要删元素,如果还是想删就用深拷贝,实现代码如下:
1 import copy 2 nums=[1,1,1,2,2,3,4,5,6,6,7,8] 3 new_nums=copy.deepcopy(nums) 4 for n in new_nums: 5 if n%2==0: 6 nums.remove(n) 7 print(new_nums) 8 print(nums)
显示的结果如下:
D:pythonpython.exe E:/Users/panyang/PycharmProjects/practice/day9/联系.py [1, 1, 1, 2, 2, 3, 4, 5, 6, 6, 7, 8] [1, 1, 1, 3, 5, 7] Process finished with exit code 0