我试图跟踪列表中的一些数字,但无法编辑所述列表的成员。当我尝试从中减去时,我得到了错误“不支持的操作数类型-=:'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]
seatCapacity
是一个列表列表,因为line
是一个列表-请参见for循环开始后的第一行:根据
prices.txt
的内容,您可以通过删除该行的方括号来解决此问题。你知道吗实际上,不是根据你发布的结果。如果
print(seatCapacity[seat])
显示[150]
是正确的,那么seatCapacity[seat]
实际上是一个列表。请注意括号,它使表示列表的[150]
和表示整数的150
之间有区别。你知道吗发生这种情况的原因是在循环期间将
line
设置为列表。你知道吗它所做的就是以文件的当前行为例
去掉前10个字符
将其拆分为单独的空格分隔的片段列表
然后迭代这些片段(
i
),并将其转换为整数(int(i)
),将结果重新组合为一个列表。你知道吗下一行的
seatCapacity
将附加该列表。你知道吗如果你想附加一个整数,而不是一个列表,你必须做一些事情,以获得整数你想要的名单。例如,如果您总是想要列表中的第一件事,请使用
list[0]
;如果您总是想要最后一件事,请使用list[-1]
。或者,如果您知道每行上总是有一个数字(不包括前10个字符),您可以直接将该字符串转换为一行,使用int(line[10:].strip())
之类的方法。(strip()
删除开头和结尾的空白。它可能是可选的,具体取决于文件的内容。)相关问题 更多 >
编程相关推荐