zoukankan      html  css  js  c++  java
  • python中的“坑”—持续更新

    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
  • 相关阅读:
    BZOJ3144 [Hnoi2013]切糕 【最小割】
    BZOJ4196 [Noi2015]软件包管理器 【树剖】
    POJ3422:Kaka's Matrix Travels——题解
    POJ2195:Going Home——题解
    POJ3068:"Shortest" pair of paths——题解
    POJ3686:The Windy's——题解
    POJ2135:Farm Tour——题解
    POJ2987:Firing——题解
    POJ3469:Dual Core CPU——题解
    POJ3281:Dining——题解
  • 原文地址:https://www.cnblogs.com/panpan0301/p/7150249.html
Copyright © 2011-2022 走看看