• python初学的问题记录3-4



    问题三

    切片操作的注意事项,要防止空字符串引发的IndexError: list index out of range。

    从例1可以看到对于非空字符串的切片操作,输出都是一样的,原因是slice不会改变原数据的数据形式,依然为str类型。

    L= 'abc'
    print(L[-1])
    print(L[-1:])
    print(L[0])
    print(L[0:1])
     
    #输出
    #c
    #c
    #a
    #a
    

      

    但是如果L是空字符串,会报错。

    L = ''
    print(L[-1]) #报错
    print(L[-1:]) #可以正常执行
    print(L[0]) #报错
    print(L[:1]) #可以正常执行
     
    #输出
     
    #print(L[-1])
    #IndexError: string index out of range
    #print(L[0])
    #IndexError: string index out of range
    

      

    由此可以看到有冒号和没有冒号的区别,尤其是在写自定义函数时,要写上冒号。

    #自定义一个strip()函数
     
    def trim(s):
        while s[:1] == ' ': # 如果是s[0]则会报错,因为编译器会认为s有为空字符的可能
            s = s[1:]
        while s[-1:] == ' ': # 如果是s[-1]则会报错,因为编译器会认为s有为空字符的可能
            s = s[:-2]
        return s
     
    # 测试:
    if trim('hello  ') != 'hello':
        print('测试失败!')
    elif trim('  hello') != 'hello':
        print('测试失败!')
    elif trim('  hello  ') != 'hello':
        print('测试失败!')
    elif trim('  hello  world  ') != 'hello  world':
        print('测试失败!')
    elif trim('') != '':
        print('测试失败!')
    elif trim('    ') != '':
        print('测试失败!')
    else:
        print('测试成功!')
    

      

    问题四

    从问题三拓展开,列表就不一样了,列表的下标问题,要注意区分slice和列表内容的类型区别。

    如果是通过slice方式,那么生成的结果依然是个list,如果是下标取值,那么取到的是列表中的内容。

    list1=['a', 'b', 3]
    print(list1[0])
    print(list1[:1])
    print(list1[-1])
    print(list1[-1:])
     
    输出结果
    #a
    #['a']
    #3
    #[3]
    

      


    原文:https://blog.csdn.net/handsomehuo/article/details/90299476

  • 相关阅读:
    如何使用 SPICE client (virt-viewer) 来连接远程虚拟机桌面?
    小米手机会不会更好
    5年一梦
    每天进步一点点——分布式文件系统下的本地缓存
    iOS开发中的NSDateFormatter日期格式解析总结
    IOS假设将一个十六进制的color转换成UIColor,非常有用
    HH实习(hpu1287)(斐波那契运用)
    学习用CMake来编写Qt程序
    【MFC设置静态文本框背景为透明】
    排序(3)---------冒泡排序(C语言实现)
  • 原文地址:https://www.cnblogs.com/qbdj/p/10901223.html
Copyright © 2020-2023  润新知