![](/img/trans.png)
[英]Python List comprehension - returned tuples seem to change when they are iterated and printed
[英]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.