当前位置: 首页 > 最新文章 > 正文

result的其他形式(result的各种形式)

学过python的都知道if和else搭配使用,可还有几种else的用法少有人知,下面说说这几种少有人知的else用法。for和elsefor可以和else搭配使用,for循环代码块正常完成后执行else代码块,若在for循环代码块中执行了break那么else代码块不会被执行。在这个案例中可以看到通过for和else的精妙配合的效果,各位可以尝试不用for和else的结构写一遍,那样会多好几行代

admin

学过python的都知道if和else搭配使用,可还有几种else的用法少有人知,下面说说这几种少有人知的else用法。for和elsefor可以和else搭配使用,for循环代码块正常完成后执行else代码块,若在for循环代码块中执行了break那么else代码块不会被执行。在这个案例中可以看到通过for和else的精妙配合的效果,各位可以尝试不用for和else的结构写一遍,那样会多好几行代码。try尝试执行可能报错的代码;except截取指定类型的报错,若截取成功则执行except内部的代码块;else指未发生报错时要执行的代码块。代码:try: f = open # 尝试只读模式打开test1.py文件except FileNotFoundError: # 捕获文件不存在的报错 print('文件不存在,新建文件!

学过python的都知道if和else搭配使用,可还有几种else的用法少有人知,下面说说这几种少有人知的else用法。

for和else

for可以和else搭配使用,for循环代码块正常完成后执行else代码块,若在for循环代码块中执行了break那么else代码块不会被执行。

代码案例:

某果园有销售数据如下:

sell_list = [    {'客户': '张三', '种类': '苹果','数量':100},    {'客户': '李四', '种类': '苹果','数量':200},    {'客户': '李四', '种类': '香梨','数量':200},    {'客户': '李四', '种类': '香梨','数量':300},    {'客户': '张三', '种类': '苹果','数量':100},    {'客户': '王五', '种类': '香蕉','数量':500},    {'客户': '王五', '种类': '香蕉','数量':150},    {'客户': '王五', '种类': '香蕉','数量':150},    {'客户': '王五', '种类': '苹果','数量':500},    {'客户': '赵六', '种类': '葡萄','数量':300},    {'客户': '李四', '种类': '葡萄','数量':300},    {'客户': '赵六', '种类': '苹果','数量':300},]

客户希望对数据进行整理,期待得到的数据集格式类似如下这样:

result_list = [    ['张三', {'苹果': 300, '香蕉': 200, }],    ['李四', {'苹果': 100, '香蕉': 200, }],    ['王五', {'苹果': 100, '香蕉': 200, }],]

代码:

def merge_by_for(table):    result = []    for i in table:        for j in result:            if j[0] == i['客户']:                if i['种类'] not in j[1]:                    j[1][i['种类']] = i['数量']                else:                    j[1][i['种类']] = j[1][i['种类']] + i['数量']                break        else:            result.append([i['客户'], {i['种类']: i['数量'], }])    return resultsell = merge_by_for(sell_list)for i in sell:    print(i)

输出:

['张三', {'苹果': 200}]['李四', {'苹果': 200, '香梨': 500, '葡萄': 300}]['王五', {'香蕉': 800, '苹果': 500}]['赵六', {'葡萄': 300, '苹果': 300}]

说明:

在上述代码中运用了for和else的组合。在for i in table中遍历列表;在for j in result中遍历result列表,假设for j in result正常结束(若result为空时也算正常结束)那么会执行result.append([i[‘客户’], {i[‘种类’]: i[‘数量’], }]),表示在reslut列表中添加一条记录;在for j in result内部判断当前记录客户是否和table中的客户同名,若同名则且种类存在累加数量,若同名且种类不存在则新建该种类,之后跳出循环且包括for的else部分。

在这个案例中可以看到通过for和else的精妙配合的效果,各位可以尝试不用for和else的结构写一遍,那样会多好几行代码。

while和else

while和else也可以搭配使用,while循环代码块正常完成后执行else代码块,若在while循环代码块中执行了break那么else代码块不会被执行。

上述案例中写成while和else版本的代码:

def merge_by_while(table):    result = []    for i in table:        j = 0        length = len(result)        while j < length:            if result[j][0] == i['客户']:                if i['种类'] not in result[j][1]:                    result[j][1][i['种类']] = i['数量']                else:                    result[j][1][i['种类']] = result[j][1][i['种类']] + i['数量']                break            j += 1        else:            result.append([i['客户'], {i['种类']: i['数量'], }])    return resultsell = merge_by_while(sell_list)for i in sell:    print(i)

说明:

上述代码运行结果与for和else的版本完全一致,但while循环要多写2-3行代码,没有for循环方便。

try、except和else

try、except和else也可以搭配,而且同样少有人知道。try尝试执行可能报错的代码;except截取指定类型的报错,若截取成功则执行except内部的代码块;else指未发生报错时要执行的代码块。

代码:

try:    f = open('test1.py', mode='r')  # 尝试只读模式打开test1.py文件except FileNotFoundError:  # 捕获文件不存在的报错    print('文件不存在,新建文件!')  # 打印文件不存在的提示    f = open('test1.py', mode='w')  # 新建test1.py文件else:    print(f.read())  # 假如没报错,会执行该语句,打印f文件;如果报错则该语句不会被执行

说明:

try代码块中的代码应该尽可能地少,它是为了尝试执行可能会报错的代码并用except语句捕获和用except代码块进行处理;else代码块是在try代码块执行时未报错后执行的,若try代码块执行时报错了则else代码块不会被执行。


上一篇: 安卓的发展史简介(安卓发展历史) 下一篇:EvenAGcf白鲨加菲微博(cf白鲨常旭微博)
返回顶部