从其他语言转过来的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))
从其他语言转来的程序员可能没有使用过 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)
鲜为人知的是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!")
原文地址:http://www.cnblogs.com/erhuabushuo/p/3789981.html