2.2 通用的序列操作
有几种操作适用于所有序列,包括索引、 切片、 相加、 相乘和成员资格检查。另外, Python还提供了一些内置函数,可用于确定序列的长度以及找出序列中最大和最小的元素。
注意:有一个重要的操作这里不会介绍,它就是迭代(iteration)。对序列进行迭代意味着对其每个元素都执行特定的操作。有关迭代的详细信息,请参阅5.5节。
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'
]
# 一个列表,其中包含数1~ 31对应的结尾
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
最后一行为这个程序的输出。
领取专属 10元无门槛券
私享最新 技术干货