21.Python技巧

1.推导式

之前我们列举过一些推导式,我们继续看看其他的写法。

将列表里的每个元素相乘:

[i*i for i in list]

条件语句插入推导式(如果i等于1,将元素置空,否则不做出操作):

['' if i == 1 else i for i in list]

2.指针应用

功能:如下的price_list列表数据 (按照等差规则填充)中间空缺的元素。

代码理解:i原始为None j原始为False 这两个指针他们的发生值的变化,来决定程序走向哪个分支。

细看:如果 price_list[key] == ''这条语句一直执行的话,将永远得不到 j = True

那也就是代表这个程序的开头处一定是不为空的一个元素

那我们来到第二个元素 '100' 它不为空,此时走else j变成True 此刻 i还是None 

来到第三个元素 '200' 它不为空 此时走else j变成True 此刻 i还是None

来到第四个元素 '' 它为空 此时走if 满足了 i == None j == True 走 if ,此刻 i = 3-1 = 2

来到第五个元素 '500' 它不为空 此时走else  满足了 i != None 走 if , 此刻 添加了一个[2,4]的list 很显然此刻就将空缺和两边的元素拿到了

最后重新将 i置为None

 

def ErrorPrice_Process(price_list):
    # price_list = ['', '100', '200', '', '500','','600']
    i = None
    j = False
    keyEr_list = []
    for key in range(len(price_list)):

        if price_list[key] == '':
            if i == None and j == True:
                i = key -1
        else:
            j = True
            if i != None:
                keyEr_list.append([i, key])
                i = None
    price_list_re = copy.deepcopy(price_list)
    for keyEr in keyEr_list:
        star = keyEr[0]
        end = keyEr[1]
        num = end - star + 1
        priceNu_list = list(numpy.linspace(float(price_list[star]), float(price_list[end]), num))

        j = 1
        for i in range(star+1, end):
            price_list_re[i] = str(round(priceNu_list[j]))
            j += 1
    return price_list_re

 

posted @ 2022-03-22 14:58  锋芒毕露的蜘蛛  阅读(47)  评论(0编辑  收藏  举报