• 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
  • 相关阅读:
    2013-9-29 通信原理学习笔记
    《大数据时代》阅读笔记
    《人人都是产品经理》阅读笔记一
    2013-8-13 信道接入技术研究学习
    2013-8-6 ubuntu基本操作
    2013-7-30 802.1X企业级加密
    2013-7-29 杂记
    2013-7-28 802.11n帧聚合
    2013-7-27 802.1X学习
    vue+node+mongoDB前后端分离个人博客(入门向)
  • 原文地址:https://www.cnblogs.com/panpan0301/p/7150249.html
Copyright © 2020-2023  润新知