写好Python之For循环
使用在循环中使用enumerate函数而不是使用"index"变量
从其他语言转过来的Python程序员,过去可能通常通过使用申明一个变量来跟踪遍历索引,,例如在C++:
for (int i=0; i < container.size(); ++i)
{
// Do stuff
}
在Python,内建的enumerate函数可以扮演该角色
糟糕的
my_container = [‘Larry‘, ‘Mode‘, ‘Curly‘]
index = 0
for element in my_container:
print("{} {}".format(index, element))
index += 1
推荐的
my_container = [‘Larry‘, ‘Mode‘, ‘Curly‘]
for index, element in enumerate(my_container):
print("{} {}".format(index, element))
使用in关键字来遍历迭代
从其他语言转来的程序员可能没有使用过 for each 风格来遍历迭代,大部分使用索引来访问元素。Python的in关键字优雅的处理该任务。
糟糕的
my_list = [‘Larry‘, ‘Moe‘, ‘Curly‘]
index = 0
while index < len(my_list):
print(my_list[index])
index +=
推荐的
my_list = [‘Larry‘, ‘Moe‘, ‘Curly‘]
for element in my_list:
print(element)
使用else执行for遍历后执行代码
鲜为人知的是Python可以在for语言包含else子句。else子句在遍历结束后执行。除非for语句被break终端。这样允许在for没有break中执行相关代码,也就是有条件的执行。
在以下场景中,我们执行报表来检查邮箱地址是否有效(用户可注册多个邮箱)。
糟糕的
for user in get_all_users():
has_malformed_email_address = False
print (‘Checking {}‘.format(user))
for email_address in user.get_all_email_addresses():
if email_is_malformed(email_address):
has_malformed_email_address = True
print (‘Has a malformed email address!‘)
break
if not has_malformed_email_address:
print (‘All email addresses are valid!
推荐的
for user in get_all_users():
print("Checking {}".format(user))
for email_address in user.get_all_email_addresses():
if email_is_malformed(email_addresss):
print("Has a malformed email address!")
break
else:
print("All email addresses are valid!")
写好Python之For循环
时间: 2024-10-11 03:01:35