序列中的所有元素都有编号,从零开始依次递增,例如:
1 2 3 4 5 6 7 8 9 | >>> said = "hello world" >>> said[0] 'h' >>> said[1] 'e' >>> said[-1] 'd' >>> said[-2] 'l' |
---|
索引0指向的是第一个元素,-1指向的最后一个元素,我们可以使用索引来获取元素,上面的例子中我们也可以直接索引,不用赋值给一个变量,例如:
1 2 3 4 5 6 | >>> 'hello world'[0] 'h' >>> 'hello world'[1] 'e' >>> 'hello world'[-1] 'd' |
---|
如果函数调用返回一个序列,可以直接对其进行索引操作,例如,结合input()函数来使用:
1 2 3 | >>> print(input("Age: ")[-1]) Age: 25 5 |
---|
下面结合一个示例来进行学习:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #生成一个列表,用来保存所有月份 months = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ] #生成一个字符串,用来表示一个月中从第一天到最后一天的英文后缀 #例如: first,second,third,fourth,fifth,sixth...... endings = ['st','nd','rd'] + 17 * ['th'] + ['st','nd','rd'] + 7 * ['th'] + ['st'] year = input('Year: ') month = input('Month (1-12): ') day = input('Day (1-31): ') #上面输入的year,month,day等都是str型,所以需要转换成int型 month_number = int(month) day_number = int(day) #这里就是运用了索引进行将列表中的元素给列出来,注:索引是从0开始的,所以我们需要在输入的数字基础上再减去1 month_name = months[month_number - 1] ordinal = day + endings[day_number - 1] print(month_name + ' ' + ordinal + ', ' + year) |
---|
上面有几点需要注意:
1、序列之间是可以相加的
1 2 3 4 | >>> 'hello ' + 'world' 'hello world' >>> [1,2,3] + [4,5,6] [1, 2, 3, 4, 5, 6] |
---|
2、序列可以与数相乘
1 2 3 4 5 6 | >>> 5 * 'python' 'pythonpythonpythonpythonpython' >>> 3 * [1,2,3] [1, 2, 3, 1, 2, 3, 1, 2, 3] >>> 3 * ['th'] ['th', 'th', 'th'] |
---|
切片是索引的灵活使用,我们可以通过切片来访问特定范围内的元素,而特定的范围又如何来表示呢?这个时候我们就可以使用多个索引了,例如:
1 2 3 4 5 6 7 8 9 10 11 | >>> net = '<a href="https://www.devilf.cc">Devilf site</a>' >>> net[9:30] 'https://www.devilf.cc' >>> net[32:-4] 'Devilf site' >>> net[32:] 'Devilf site</a>' >>> net[:-1] '<a href="https://www.devilf.cc">Devilf site</a' >>> net[:] '<a href="https://www.devilf.cc">Devilf site</a> |
---|
切片还涉及到步长的问题,如果我们不指定,默认便是1
1 2 3 4 5 6 7 8 9 10 11 12 | >>> num = [1,2,3,4,5,6,7,8,9] >>> num[0:10:1] [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> num[0:10:2] [1, 3, 5, 7, 9] 上面是步长大于0的情况,当步长为负数时,如何切片呢? >>> num[10:0:-1] [9, 8, 7, 6, 5, 4, 3, 2] >>> num[10::-1] [9, 8, 7, 6, 5, 4, 3, 2, 1] >>> num[10:1:-2] [9, 7, 5, 3] |
---|
需要注意的是:步长不能为0,步长大于0的时候,意思是从左向右移动元素,步长小于0的时候,即为从右向左移动元素。