在python中将数学应用于列表的成员
我试图跟踪列表中的一些数字,但我无法编辑所述列表的成员。当我尝试从中减去时,会出现错误“不支持的操作数类型-=:'list'和'int'” seatCapacity[座椅]正确显示一个数字,因此我不确定我做错了什么 编辑: 以下是一些输出示例:在python中将数学应用于列表的成员,python,list,Python,List,我试图跟踪列表中的一些数字,但我无法编辑所述列表的成员。当我尝试从中减去时,会出现错误“不支持的操作数类型-=:'list'和'int'” seatCapacity[座椅]正确显示一个数字,因此我不确定我做错了什么 编辑: 以下是一些输出示例: print(seatCapacity) 输出: [[150], [120], [200], [80], [120], [80]] [150] 及 输出: [[150], [120], [200], [80], [120], [80]] [150]
print(seatCapacity)
输出:
[[150], [120], [200], [80], [120], [80]]
[150]
及
输出:
[[150], [120], [200], [80], [120], [80]]
[150]
seatCapacity
是一个列表列表,因为line
是一个列表-请参见for循环开始后的第一行:
line = [int(i) for i in line[10:].split()]
根据prices.txt
的内容,您可以通过删除该行上的括号来解决此问题
seatCapacity[座椅]正确显示一个数字,因此我不确定我做错了什么
事实上,不是根据你发布的输出。如果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()
删除开头和结尾的空白。根据文件内容,它可能是可选的。)错误消息是什么?显示seatCapacity[seat]
的值(这显然是一个列表)<代码>座位本身没有在您的示例中定义,也没有prices.txt
的示例。请发布一个。对不起,seat是另一个函数0-5的数字,它给出的输出是[[150]、[120]、[200]、[80]、[120]、[80]]。当我尝试进行计算时,它给出的错误是“不支持的操作数类型-=:'list'和'int'”。我不确定您指的是哪个括号,prices.txt是csv行,从列出的行中删除括号会产生另一个错误。我也不确定行是如何变成列表的。括号是[
和]
——它们是用Python定义列表的方式seatCapacity=[]
创建一个空列表。如果行[10:].split()
包含多个数字,则可以使用第二个for循环将每个数字附加到seatCapacity
。