2017-12-09 2 views
1

リストのいくつかの番号を追跡しようとしていますが、上記リストのメンバーを編集できません。私はそれから減算しようとすると、私は「のためにサポートされていないオペランドのタイプ(S) - = 『リスト』と 'int型」エラーを与えていますPythonでリストのメンバーに数学を適用する

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は、[シート]はので、私はないよ正しく番号が表示されます私が間違っていることを確信している。

編集:出力の いくつかの例は、

print(seatCapacity) 

出力:

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

print(seatCapacity[seat]) 

出力:

[150] 
がリストであるため
+1

あなたのエラーメッセージは何ですか? 'seatCapacity [seat]'の値を表示します(これは明らかにリストです)。 'seat'自体はあなたの例では定義されておらず、' prices.txt'の例もありません。 [mcve]を投稿してください。 –

+0

申し訳ありませんが、シートが他の機能0~5の数であり、それは得られる出力である[150]、[120]、[200]、[80]、[120]、[80]]。 == 'list'と 'int'のサポートされていないオペランドタイプ " – Amanda

答えて

1

seatCapacity [座席]座席数が正しく表示されているため、間違っていることがわかりません。

実際には、あなたが投稿した出力によるものではありません。 print(seatCapacity[seat])[150]と表示されている場合は、実際にはseatCapacity[seat]がリストになります。リストを表す[150]と整数を表す150の違いを表す角括弧に注意してください。

これはループ中にlineをリストに設定する理由です。これは何

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

は、個々のwhitespace-のリストに最初の10の文字離れ例えば、

"10 20 30 40" 

分割それを

"something 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()は、先頭と末尾から空白を削除します。それはあなたのファイルの内容に応じて、任意であってよい。)

1

は、リストのリストである - ループの開始後最初の行を参照してください。

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

prices.txtの内容によっては、あなたが削除することによってこの問題を解決することができるかもしれませんその行の括弧。

+0

あなたが参照している括弧が分からない、prices.txtが行であることがわかりませんあなたがリストした行から括弧を削除すると、別のエラーが発生します。私はまたどのようにラインがリストになったのかよく分かりません。 – Amanda

+0

大括弧は '['と ']'です - あなたがPythonでリストを定義する方法です。 'seatCapacity = []'は空のリストを作成します。 'line [10:]。split()'に複数の数値が含まれている場合、2回目のforループを使用して個々の数値を 'seatCapacity'に追加することができます。 – Martey

関連する問題