2016-11-06 12 views
0
name = list('ayushgupta') 
>>> name 
['a', 'y', 'u', 's', 'h', 'g', 'u', 'p', 't', 'a'] 
>>> name[5:5] = list('THE') 
>>> name 
['a', 'y', 'u', 's', 'h', 'T', 'H', 'E', 'g', 'u', 'p', 't', 'a'] 
>>> name[5:5] = [] 
>>> name 
['a', 'y', 'u', 's', 'h', 'T', 'H', 'E', 'g', 'u', 'p', 't', 'a'] 

名前「5:5」を使用して名前から「T」、「H」、「E」を削除しようとすると、機能しません。私は同じ名前を削除するために名前[5:8]を使用できることを知っています。誰もがなぜそうだと説明できますか?python-リストから要素を削除する

答えて

0

あなたはしなければならない:あなたがやったとき

>>> name[5:8] = [] 
>>> name 
['a', 'y', 'u', 's', 'h', 'g', 'u', 'p', 't', 'a'] 

name[5:5]=list('THE')THEは5日、インデックスからのリストの5番目のインデックスにリストに挿入してしまいました。 name[5:5] = []を実行しているときに、何も削除せず、代わりに空のlistを挿入しようとしているため、変更はありません。 5〜8のインデックスからリストから項目を更新するために、あなたはname[5:8] = []

ORをしなければならない、あなたのように、リストのコンテンツを削除するためにdelを使用することがあります。

>>> del name[5:8] 
>>> name 
['a', 'y', 'u', 's', 'h', 'g', 'u', 'p', 't', 'a'] 
+0

"誰でも説明できるのはなぜですか?*"。まあ? –

+0

@AndrasDeak既に更新中です。チェックを編集: –

+3

良いです。あなたは、最初の試行に完全な答えを与えるためにあなたの時間を取ることを考慮する必要があります。それはあなたにいくつかのdownvotesを救うことができます。私はあなたにFGITWの行動をたくさん見せているのを見てきたので、あなたにこれを伝えているだけです。私はこれが尋問者やサイトに利益をもたらすとは考えていません。あなたが答えを出すなら、それを良いものにしなさい。あなたは長期的にはそれのような多くの担当者を得るでしょう。 –

0

参照してください:

name[5:5] 

を意味する:5(含む)から5排他的

だから、(かなり複雑な方法によって)要素name[4]を選択するために、

name[4:5] 

ようなものを使用しています。

1

リストのスライスに割り当てることで、リストの内容と長さを変更できます。ただし、スライスはname[5:5]です。 スライスに終了インデックスが含まれていないことに注意してください。したがって、スライスはname[5]から始まり、続けてname[5]は含まれません。つまり、スライスは空のです。

要するに、すでに空のリストの一部を削除しようとしています。 name[5:8]のような実際のスライスを試してみると、よりうまくいくでしょう。 1つのアイテムだけを削除するには、name[5:6]をお試しください。スライスname[a:b]の長さはb-aba以上の場合)です。これは覚えやすいです。

関連する問題