当第一列充满字符串时,在列表列表中添加第二列

2024-10-08 22:25:40 发布

您现在位置:Python中文网/ 问答频道 /正文

几天来,我一直在努力访问我的列表列表的第二列,并总结浮动

  1. 这是我这学期最后一个实验作业。是的,这是家庭作业。是的,我已经用尽了所有的选择
  2. 我的大脑在这一点上是糊状的

我的列表中的第一列有12行,它们都代表一年中的每个月,并用月份的名称填充。第二列用浮标填充,表示每月的降雨量

当尝试添加第二列float时,我总是得到一个"TypeError: unsupported operand type(s) for +=: 'int' and 'str"。好吧,我完全理解。不能添加字符串,因为它们是字母,而不是数字。下面是我的代码:

def total_Rainfall(months):
    total = 0
    for c in range(2):
        for r in range(12):
            total += months[r][c]
    print('The total rainfall for the year is ', total, ' inches.')

如您所见,我将total初始化为0,然后将其用作累加器,将每个浮点值相加,然后打印总数。名为months的列表列表(作为参数传入)有2列(1列表示月份字符串,1列表示降雨浮动-浮动在第二列中)。我遍历列和数组来访问浮动

我试过用[:,1]访问,但这不是元组。我尝试过切片[0:11],但是必须首先访问字符串行,这为我创建了一个断点,我不希望启用它。我试过使用total = int(months[r][c]),但没有用。我确信我的浮点是列表中的浮点,而不是字符串,这里有证据:['April', 2.0]

我想我很快就会得到这个,因为我在C#中处理过多维列表。我到底错过了什么

我不是在寻找答案。我在寻找正确方向的指引。我希望我提供了足够的信息。我很肯定,我错过了一些非常简单的东西,我会打自己的最后。请帮帮我!我显然想得太多了

注意:不能为此使用预先存在的库。有点违背了任务的目的


Tags: 字符串in列表for作业rangeinttotal
2条回答

现在,您正在查找列表列表中的每个元素并将它们相加。这将导致:

total = 0
total += 'April'
total += 2.0
total += 'a month name'
total += 1.3 # random float value

显然,这是无效的。因此,只能访问数组中的第二列。您可以使用以下任一方法执行此操作:

Method 1:
for row in months:
    total += row[1]

Method 2:
for row_index in range(len(months)):
     total += months[row_index][1]

两种方法都很好,但我更喜欢方法1

很明显,您也在添加字符串,因为total += months[r][c]可以是total += months[0][0],也就是一个字符串

相反,您可以这样做:

def total_Rainfall(months):
    total = 0
    for row in months:
        total += row[1] # always use the second column
    print('The total rainfall for the year is ', total, ' inches.')

因此,如果我们用以下数据来尝试:

months = [
    ['Jan', 2.3],
    ['Feb', 3.3],
    ['Mar', 3.2]
]
total_Rainfall(months)

我们得到:

The total rainfall for the year is  8.8  inches.

相关问题 更多 >

    热门问题