目录
【列表长度】
关键:len(列表名)
# 列表的长度—len(列表) ls = [1, 2, 3, 4, 5] print(len(ls)) #输出5
【列表索引】
用法和JAVA一致,即:在变量后面加上中括号
在JAVA和C++中,这属于数组,而python也能这么表示对应的位置,例:
# 格式:变量名[位置编号] cars = ["BYD", "BMW", "AUDI", "TOYOTA"] print(cars[0]) print(cars[1]) print(cars[-1]) print(cars[-2])# 注意:正向索引从0开始,反向索引从-1开始。
列表的【切片】
假如说列表是面包,那么列表也能分成很多分的小面包吧
认识切片:[头:尾:步长]
注意事项:在绝大部分正常情况下,不写参数的话,默认头是最前面(默认为0或-1),尾是最后面,步长是1(也默认为1),并且输出是含头不含尾的
【正向切片】
正向的头默认是0的,所以为了方便观看,我的test从0开始的
# 例如设test=[0,1,2,3,4,5] print(test[1:5:1]) # 输出[1, 2, 3, 4] print(test[1:5:2]) # 输出[1, 3] print(test[3:]) # 输出[3, 4, 5] print(test[:5]) # 输出[0, 1, 2, 3, 4] print(test[::]) # 输出[0, 1, 2, 3, 4, 5]
【反向切片】
反向的头默认是-1的,所以为了方便观看,我的test2从-1开始的
# 例如设test2=[-6,-5,-4,-3,-2,'-1(标记)']
print(test2[-2:-5:-2]) # 输出[-2, -4]
print(test2[::-1]) # 全部逆序输出['-1(标记)', -2, -3, -4, -5, -6]# 标记是我后面将特殊案例用的,可以将-1和列表里的-1区分开来,有效避免是系统返回的值-1,如果不打算深究则可以先不理
【温馨提示】以上仅为过家家,开始来特殊案例和本身不该让程序员头疼的特性了
上面我特地提了一嘴,是绝大部分情况下,因为很少涉及这种情况,但并不排除遇不到这种问题
【特殊案例/特性 ----- 反直觉情况】
特性Ⅰ
# 特性Ⅰ # 有且仅当结束和步长为负数时,缺省的开始才默认为-1,即: # 开始和步长决定切片方向,也决定结束的值(0或-1) print(test2[:-4:-1]) # 有且仅当结束和步长为负数时,开始缺省才默认为-1 print(test2[-2::1]) # 有且仅当开始为负数且步长缺省(默认为1)时,结束才默认-1 # 但结束和步长不能决定切片方向,也不能决定开始的值,开始的值依旧为0 print(test2[:-4:1]) # 开始默认为0 print(test2[:-4:]) # 开始默认也为0、步长默认为1
特性Ⅱ
# 特性Ⅱ
# 开始和步长决定结束方向与默认值,若开始->结束的方向与步长方向不同则会出现2种不合理情况
# ①缺省直接输出列表最后一个值
# ②不缺省输出空列表[]
# 其他情况一律默认开始为0,步长为1
# 在顺逆均不一致的情况下
print(test2[:4:-1])
# 参数缺省的情况下,结束为正参数(4),开始缺省,切片整体呈现顺序(-1),步长又为逆序,直接返回最后一个数-1
print(test2[0:4:-1])
# 在参数确定(不缺省)的情况下,开始为0结束为4属于顺序,步长逆序,返回一个空列表
# 同理
print(test2[-1::1])
# 参数缺省的情况下,开始为负参数(-1),结束缺省,切片整体呈现逆序(1),步长又为顺序,直接返回最后一个数-1
print(test2[-1:0:1])
# 在参数确定(不缺省)的情况下,开始为-1结束为0属于逆序,步长顺序,返回一个空列表
运行结果
(特殊)特性Ⅲ 他们应该是属于特性Ⅱ的延伸,方向问题,值很奇怪
应该是属于特性Ⅱ的延伸,方向问题,值很奇怪
# (特殊)特性Ⅲ 他们应该是属于特性Ⅱ的延伸,方向问题,值很奇怪 print(test2[-1::]) # 输出['-1(标记)'] print(test2[0::-1]) # 输出[-6] # 因为与下面两个完全不一样,默认值肯定对得上 print(test2[-1:-1:]) print(test2[0:0:-1])
运行结果
我的建议:
特殊案例/特性的问题,我自己都觉得很无脑 不可思议,这已经不算符合常理了,所以我建议三个特性可以知道有这么回事就好,不要再去深究了,很浪费时间的,全部都枚举了一遍可能了,你如果再去这个地方捣鼓真的不值得,你只要好好学会正向切片和反向切片即可,最主要的是,必要条件的参数尽量写,不要空着,这样就可以尽最大可能的保证不会关联到特性Ⅰ/Ⅱ/Ⅲ,特性就是因为空着和顺序不统一才会出现的。
给自己对切片留个大概印象,开始到结束的方向一定要和步长的方向一致,开始默认 正向为0 反向为-1