如何在列表中找到最后一个元素的索引并将其添加到另一个元素

时间:2015-11-08 03:21:24

标签: python

我正在制作一个计划,该计划的重点是:

  1. 计算调查中包含的住户数,并以三列格式打印。

  2. 计算家庭平均收入,并列出每个家庭的识别号码和收入超过平均值。

  3. 确定收入低于2015年美国毗邻州贫困水平的家庭百分比。使用给定的公式计算贫困水平收入。该公式位于 povertycalc 函数内,该函数分配了名为 povertyLevel 的变量。

  4. 问题在于,我试图制作另一份低于贫困线的房屋清单的指数清单。

    1042  12180.06  3
    1062  13240.45  2
    1327  19800.56  2
    1483  22458.23  7
    1900  17000.09  3
    2112  18125  4
    2345  15623  2
    3210   3200  1
    3600  39500  5
    3601  11970  2
    4724   8900  3
    6217  45000.70  2
    9280   6200  1
    1000  31000  3
    1200  36000  2
    5601  51970  9
    5724  66900  3
    5217  10002.68  2
    5280  70000  1
    5000 100000  6
    5200  25000.4  3
    5230 120000  6
    6641  85000  7
    7000  45500  4
    7100  56500  3
    8110 110005.9  8
    9101  67590.40 6
    

    昨天我通过电子邮件发送给我的教授时,我被告知:

      

    "您不能将其他列表的数据用作索引。"

    我该怎么做才能提高效率?截至目前,该程序打印出所提供信息的三列(我将发布与该程序相关的TXT文件的链接)以及应该包含贫困线以下房屋列表的空白括号。 / p>

    以下是与该程序相关的文件中的文字:

    {{1}}

1 个答案:

答案 0 :(得分:0)

首先,在您的代码段中,存在一些问题。

您可能会认为声明global变量会将该变量设为该脚本的global!但事实并非如此 您错过了对global关键字的解释。 通过使用global语句,您告诉python解释器您要访问/修改外部作用域中的变量,而不是将其分配给本地。 然而,global语句的最小使用是一种很好的编程设计。

在代码片段indexKeep.append(HouseIncome.index(HouseIncome[-1]))中,HouseIncome[-1]提取列表的最后一个值。因此合并HouseIncome.index(HouseIncome[-1])给出了最后一个元素的索引,你正在间接地做它。相反,您可以简单地找到len(HouseIncome) - 1来获得相同的信息。但是你所指的HouseIncome是你在顶部初始化的那个是空的。所以最终不会起作用。

我已经修改了你的程序了。但我没有测试过它。可能你想看看那个。

def main():
    NumberofHouseholds = 0
    HouseIncome = []
    avgincome = 0

    for idNumber, row in enumerate(open('program9.txt', 'r')): # While there are more records
        words = row.split()        # Split the records into substrings
        acctNum = int(words[0])         # Convert first substring to integer
        annualIncome = float(words[1])  # Convert second substring to float
        members = int(words[2])         # Convert third substring to integer
        print(acctNum, format(annualIncome, '.2f'), members, sep=' ')
        if povertycalc(annualIncome, idNumber + 1):
            HouseIncome.append(annualIncome)
        NumberofHouseholds = NumberofHouseholds + 1
        avgincome = (avgincome+annualIncome)/NumberofHouseholds

    # Close the file.
    print(avgincome)
    print(HouseIncome)

def povertycalc(annualIncome, members):
    povertyLevel = 15930.00 + 4160.00 * (members-2)

    if annualIncome < povertyLevel:
        return True
    else: return False

# Call the main function.
main()