首页 > 代码库 > 写好Python之For循环
写好Python之For循环
写好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!")
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。