Python 基础教程(3rd ed)(28):列表和元组 2.2.1

阅读数:18 2019 年 10 月 26 日 09:45

Python基础教程(3rd ed)(28):列表和元组 2.2.1

(通用的序列操作:索引)

序列中的所有元素都有编号——从 0 开始递增。你可像下面这样使用编号来访问各个元素:

复制代码
>>> greeting = 'Hello'
>>> greeting[0]
'H'

注意 字符串就是由字符组成的序列。索引 0 指向第一个元素,这里为字母 H。不同于其他一些语言,Python 没有专门用于表示字符的类型,因此一个字符就是只包含一个元素的字符串。

这称为索引(indexing)。你可使用索引来获取元素。这种索引方式适用于所有序列。当你使用负数索引时,Python 将从右(即从最后一个元素)开始往左数,因此 -1 是最后一个元素的位置。

复制代码
>>> greeting[-1]
'o'

对于字符串字面量(以及其他的序列字面量),可直接对其执行索引操作,无需先将其赋给变量。这与先赋给变量再对变量执行索引操作的效果是一样的。

复制代码
>>> 'Hello'[1]
'e'

如果函数调用返回一个序列,可直接对其执行索引操作。例如,如果你只想获取用户输入的年份的第 4 位,可像下面这样做:

复制代码
>>> fourth = input('Year: ')[3]
Year: 2005
>>> fourth
'5'

代码清单 2-1 所示的示例程序要求你输入年、月(数 1~12)、日(数 1~31),再使用相应的月份名等将日期打印出来。

代码清单 2-1 索引操作示例

复制代码
# 将以数指定年、月、日的日期打印出来
months = [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
]
# 一个列表,其中包含数 131 对应的结尾
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): ')
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)

这个程序的运行情况类似于下面这样:

复制代码
Year: 1974
Month (1-12): 8
Day (1-31): 16
August 16th, 1974

最后一行为这个程序的输出。

评论

发布