在python中将数学应用于列表的成员

2024-09-30 03:24:49 发布

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

我试图跟踪列表中的一些数字,但无法编辑所述列表的成员。当我尝试从中减去时,我得到了错误“不支持的操作数类型-=:'list'和'int'”

with open("prices.txt") as f:
        seatCapacity = []
        for line in f: 
            line = [int(i) for i in line[10:].split()]
            seatCapacity.append(line)

seatCapacity[seat] -= 1

seatCapacity[seat]正确地显示了一个数字,所以我不确定我做错了什么。你知道吗

编辑: 输出的一些例子是

print(seatCapacity)

输出:

[[150], [120], [200], [80], [120], [80]]

以及

print(seatCapacity[seat])

输出:

[150]

Tags: in编辑类型列表for错误withline
2条回答

seatCapacity是一个列表列表,因为line是一个列表-请参见for循环开始后的第一行:

 line = [int(i) for i in line[10:].split()]

根据prices.txt的内容,您可以通过删除该行的方括号来解决此问题。你知道吗

seatCapacity[seat] displays a number correctly so I'm not certain what I'm doing wrong.

实际上,不是根据你发布的结果。如果print(seatCapacity[seat])显示[150]是正确的,那么seatCapacity[seat]实际上是一个列表。请注意括号,它使表示列表的[150]和表示整数的150之间有区别。你知道吗

发生这种情况的原因是在循环期间将line设置为列表。你知道吗

line = [int(i) for i in line[10:].split()]

它所做的就是以文件的当前行为例

"something 10 20 30 40"

去掉前10个字符

"10 20 30 40"

将其拆分为单独的空格分隔的片段列表

["10", "20", "30", "40"]

然后迭代这些片段(i),并将其转换为整数(int(i)),将结果重新组合为一个列表。你知道吗

[10, 20, 30, 40]

下一行的seatCapacity将附加该列表。你知道吗

如果你想附加一个整数,而不是一个列表,你必须做一些事情,以获得整数你想要的名单。例如,如果您总是想要列表中的第一件事,请使用list[0];如果您总是想要最后一件事,请使用list[-1]。或者,如果您知道每行上总是有一个数字(不包括前10个字符),您可以直接将该字符串转换为一行,使用int(line[10:].strip())之类的方法。(strip()删除开头和结尾的空白。它可能是可选的,具体取决于文件的内容。)

相关问题 更多 >

    热门问题