博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python初学的问题记录3-4
阅读量:5300 次
发布时间:2019-06-14

本文共 1267 字,大约阅读时间需要 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

转载于:https://www.cnblogs.com/qbdj/p/10901223.html

你可能感兴趣的文章
linux下编译openjdk8
查看>>
【python】--迭代器生成器装饰器
查看>>
Pow(x, n)
查看>>
安卓当中的线程和每秒刷一次
查看>>
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
FUSE-用户空间文件系统
查看>>
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
属性动画
查看>>
标识符
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
快来熟练使用 Mac 编程
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
plsql使用,为什么可以能看见其他用户的表
查看>>