内置练习:enumerate()
在本练习中,您将练习使用 Python 的内置函数 enumerate()。该函数可用于获取带索引的列表。例如,假设您有一个来参加您所举办派对的人员列表。该列表按到达顺序排列(Jerry 最先到达,其次是 Kramer,等等):
names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']
如果您想附加一个表示到达顺序的索引,可以 使用下面的 for 循环:
indexed_names = []
for i in range(len(names)):
index_name = (i, names[i])
indexed_names.append(index_name)
[(0,'Jerry'),(1,'Kramer'),(2,'Elaine'),(3,'George'),(4,'Newman')]
不过,这并不是最高效的做法。让我们看看如何使用 enumerate() 来提高效率。
本练习是课程的一部分
高效编写 Python 代码
练习说明
- 将
for i in range(len(names))改为使用enumerate(),并以i作为索引变量、name作为迭代变量来编写 for 循环。 - 使用
enumerate()和列表推导式重写上一个 for 循环,创建新列表indexed_names_comp。 - 再创建一个列表(
indexed_names_unpack),方法是对用enumerate()作用于names后得到的 enumerate 对象 使用星号(*)进行解包。这一次,将enumerate()的起始索引设为 1 而不是 0。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Rewrite the for loop to use enumerate
indexed_names = []
for ____,_____ in ____(names):
index_name = (i,name)
indexed_names.append(index_name)
print(indexed_names)
# Rewrite the above for loop using list comprehension
indexed_names_comp = [(____,____) for i,name in ____(names)]
print(indexed_names_comp)
# Unpack an enumerate object with a starting index of one
indexed_names_unpack = [____(names, ____)]
print(indexed_names_unpack)