Python学习-day11-切片
上一节回顾
索引操作示例
代码清单2-1
# 需求:将以数指定年、月、日的日期打印出来。
months=['January','February','March','April','May','June','July','August','September','October','November','December']
# 一个列表,其中含有数1~31对应的结尾
endings=['st','nd','rd']+17*['th']\
+['st','nd','rd']+7*['th']\
+['st']
print(endings)
print('******************************************************')
year=input('Year:')
month=input('Month(1~12):')
day=input('Day(1~31):')
month_number = int(month)
day_number = int(day)
#别忘了将表示月和日的数减1,这样才能得到正确的索引
month_name = months[month_number-1]
ordinal = day + endings[day_number-1]
print(month_name+' '+ordinal+', '+year)
2.2.2、切片
除使用索引来访问单个元素外,还可使用切片来访问特定范围内的元素,为此,可使用两个索引,并用冒号分隔:
tag = '<a href="http://www.python.org">Python Web site </a>'
print(tag[-1])
str1 = tag[9:30]
print(str1)
str2 = tag[32:-4]
print(str2)
切片适用提取序列的一部分,提供两个边界,其中第一个边界索引指定的元素包含在切片内,第二个不包含在切片内。
一些操作小技巧
1、简写
numbers = [1,2,3,4,5,6,7,8,9,10]
print(numbers[3:6])
print(numbers[0:1])
# 需求:获取8,9,10
print(numbers[-3:-1])
print(numbers[-3:0]) #空序列
print(numbers[-3:]) #取后三个元素
print(numbers[:3]) #取前三个元素
print(numbers[:]) #复制整个序列
切片操作示例
代码清单2-2
# 需求:输入网址,提取域名
url = input('Please enter the URL:')
print('Domain name: '+url[11:-4])
2、更大的步长
print(numbers[0:10]) #提取原序列
print(numbers[:]) #提取原序列,简写
print(numbers[0:10:1]) #提取原序列,步长为1
print(numbers[0:10:2]) #提取步长为2的序列
print(numbers[::2]) #提取步长为2的序列,简写
print(numbers[0:10:3]) #提取步长为3的序列
print(numbers[::3]) #提取步长为3的序列,简写
步长不能为0,否则无法向前移动,但可以为负数(从右向左提取元素)
print(numbers[::0])
print(numbers[::-3])
特别的例子:
numbers = [1,2,3,4,5,6,7,8,9,10]
print(numbers[3:6])
print(numbers[6:3])
print(numbers[6:3:-1])
博文内容来自本人所选的学习Python的工具书-《Python基础教程》(第三版)人民邮电出版社。