开始使用免费开始使用

内置练习: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)
编辑并运行代码