繁体   English   中英

在 Python 的元组迭代列表中访问特定索引的正确方法

[英]Correct way to access specific index in an iterated list of tuples in Python

我有一些代码旨在计算给定数字的应付税款(澳大利亚)。 我有一个包含税级和适用税率的元组列表:

rates = [(18200,0.19),(37000,0.325),(90000,0.37),(180000,0.45),(99999999999,0.45)]

然后我有一种方法可以计算收入金额并计算适用的税款。

    def calc_tax(self,income):
        tax_payable = 0
        for i,(bracket,rate) in enumerate(self.rates):
            if income >= bracket:
                amt_above_brkt  = min(income - bracket,self.rates[i+1][0] - bracket)
                tax_payable += amt_above_brkt * rate
        print(tax_payable)

function 有效,它给了我正确的税,没有问题。 我不喜欢 function 中的self.rates[i+1][0]调用来获取税级的上限(下一个索引)。

有没有更好的方法使用枚举和解包的元组来做到这一点?

如果您将 zip 上限和下限放在一起,它变得更具可读性并且您不再需要i

def calc_tax(income):
    tax_payable = 0
    rate_bounds, rate_list = zip(*rates)
    for rate, lo, up in zip(rate_list[:-1], 
                            rate_bounds[:-1], 
                            rate_bounds[1:]):
        if income >= lo:
            amt_above_brkt  = min(income - lo, up - lo)
            tax_payable += amt_above_brkt * rate
    print(tax_payable)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM