1

この質問は、一般的な好奇心から出たものです。現在のプロジェクトに取り組んでいるときに気づきました (驚くべきことに、今日まで遭遇したことがありませんでした)。

次のコードを使用します。

List = ["hi","stack","over","flow","how","you","doing"]
del List(len(List)-1)

エラー:

SyntaxError: can't delete function call

関数の呼び出しを参照してリストのインデックスを削除できない理由がわかりません。私はただ黙って、あなたにはそれができないことを受け入れますか、それとも根本的に間違ったことをしていますか?

これに対する簡単な答えがある場合は申し訳ありませんが、Googleがあまり役に立たなくなっているか、これがあまりにも明白であるため、助けが必要です.

4

3 に答える 3

13

どういうわけかList関数として呼び出すのではなく、リストの最後の要素を削除するつもりでした:

del List[len(List)-1]

Python のdelステートメントは、変数、リスト [要素]、または object.property の削除などの特定の形式を取る必要があります。これらのフォームは深く入れ子にすることができますが、従う必要があります。これは代入文と同じです。関数呼び出しに代入しようとすると、同様の構文エラーが発生します。

もちろん、この場合に本当に欲しいのは

del List[-1]

これはリストの最後の要素を意味し、より Pythonic です。

于 2009-10-08T10:23:16.580 に答える
5

List()リストにインデックスを付ける必要があるときに、関数を呼び出していますList[]

Python では、丸括弧 ,()は関数の呼び出しに使用され、角括弧[]はリストやその他のシーケンスのインデックスに使用されます。

試す:

del List[len(List) - 1]

またはさらに良いのは、Python が負のインデックスを許可しているという事実を使用することです。これは最後からカウントされます。

del List[-1]

listまた、わかりやすくするために、リストの名前を組み込みの型名にあまり近づけない方がよい場合もあります。

于 2009-10-08T10:21:37.817 に答える
1

あなたは許可されています。ただし、間違った構文を使用しています。正しい構文は次のとおりです。

del List[-1]

「len(List)」の部分は役に立たないことに注意してください。

于 2009-10-08T10:23:55.070 に答える