|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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的打印为列表从后向前遍历去除最后一个元素,当全部省略打印时可输出列表全部
元素,同样在反向索引过界时打印为空而不会出现内存访问报错;
对内存越界问题希望可以在讨论区见到更多讨论,对此处的内存分析不甚了解
|
|