リスト内のいくつかの番号を追跡しようとしていますが、そのリストのメンバーを編集できません。減算しようとすると、「-=: '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 [seat]は数値を正しく表示するので、何が間違っているのかわかりません。
実際、あなたが投稿した出力によるものではありません。それは正しいことだ場合に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文字を除いて)各行に常に1つの数字があることがわかっている場合は、のようなものを使用して、その文字列を1行に直接変換できますint(line[10:].strip())
。(strip()
最初と最後から空白を削除します。ファイルの内容によってはオプションの場合があります。)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加