|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 代号3 于 2018-8-1 23:49 编辑
编译器代码
- list4=['123','sdf','12d',3,'3']
- print(list4)
- print(list4[0:2])
- print(list4)
- print('3' in list4[0])
- # print(3 in list4[3])
- print(list4[:0])
- print(list4[:1])
- print(list4[:-2])
复制代码
输出结果
- ['123', 'sdf', '12d', 3, '3']
- ['123', 'sdf']
- ['123', 'sdf', '12d', 3, '3']
- True
- []
- ['123']
- ['123', 'sdf', '12d']
复制代码
过程分析
1·建立列表并初始化 分析第3个元素-3与第四个元素-‘3’在列表中是否存储的类型有差异
- list4=['123','sdf','12d',3,'3']
- num1=list4[3:4]
- print(num1)
- print(type(num1))
- num2=list4[4:5]
- print(num2)
- print(type(num2))
- print(type(list4[3]))
- print(type(list4[4]))
复制代码
结果如下
- [3]
- <class 'list'>
- ['3']
- <class 'list'>
- <class 'int'>
- <class 'str'>
复制代码
从输出结果可知 通过切片获得的元素数据类型为list型 而通过type直接判断列表中的元素获得的列表中的元素类型是不一样的
2·对list4进行切片 并在切片前和切片后分别打印list4 输出结果显示切片并不破坏原有列表的元素存储 而是开辟新的内存进行存储
3·对列表中元素进行获取判断
- list4=['123','sdf','12d',3,'3']
- print('3'in list4[0])
- print('3'in list4[2])
- print('3'in list4[4])
复制代码
结果如下
而
- list4=['123','sdf','12d',3,'3']
- print('3'in list4[0])
- print('3'in list4[3])
复制代码- Traceback (most recent call last):
- True
- File "C:/Python/test.py", line 80, in <module>
- print('3'in list4[3])
- TypeError: argument of type 'int' is not iterable
复制代码
说明在list中通过in进行判断需要区分元素的数据类型 在Python中‘3’同样视为字符串类型 无单字符型 也是一种列表
4·整形数据的in判断
- list4=['123','sdf','12d',3,'3']
- print(3 in list4[4])
复制代码
结果
- Traceback (most recent call last):
- File "C:/Python/test.py", line 79, in <module>
- print(3 in list4[4])
- TypeError: 'in <string>' requires string as left operand, not int
复制代码
报错:在<String >”中需要字符串作为左操作数,而不是int
- list4=['123','sdf','12d',3,'3']
- print(3 in list4[3])
复制代码
结果
- Traceback (most recent call last):
- File "C:/Python/test.py", line 80, in <module>
- print(3 in list4[3])
- TypeError: argument of type 'int' is not iterable
复制代码
报错:类型“int”的参数不是可迭代的
结论:在list中元素类型存取是区分的 如果需要通过in获得3的切片可写为[3]即可
5·对省略切片的写法浅析
正数写法:
- list4=['123','sdf','12d',3,'3']
- print(list4[:0])
- print(list4[:1])
- print(list4[:5])
- print(list4[:6])
- print(list4[:100])
复制代码
结果:
- []
- ['123']
- ['123', 'sdf', '12d', 3, '3']
- ['123', 'sdf', '12d', 3, '3']
- ['123', 'sdf', '12d', 3, '3']
复制代码
从结果中可知当省略写法直接打印第一个元素即存储在0号位置的元素时需要写[:1]而非[:0],另 当切片索引结尾位置
大于切片本身大小时并未出现内存访问越界报错扔输出原列表
负数写法:
- list4=['123','sdf','12d',3,'3']
- print(list4[:-0])
- print(list4[:-1])
- print(list4[:])
- print(list4[:-2])
- print(list4[:-4])
- print(list4[:-5])
- print(list4[:-100])
复制代码
结果:
- []
- ['123', 'sdf', '12d', 3]
- ['123', 'sdf', '12d', 3, '3']
- ['123', 'sdf', '12d']
- ['123']
- []
- []
复制代码
在负数写法中,-0仍是打印为空,而-1的打印为列表从后向前遍历去除最后一个元素,当全部省略打印时可输出列表全部
元素,同样在反向索引过界时打印为空而不会出现内存访问报错;
对内存越界问题希望可以在讨论区见到更多讨论,对此处的内存分析不甚了解
|
|