2016-08-24 6 views
-2

リストからすべての3番目のアイテムを削除します。例については :リストから3番目のアイテムをすべて削除する(リスト内の一定間隔でエントリを削除する)

list1 = list(['a','b','c','d','e','f','g','h','i','j']) 

3の倍数であるインデックスを除去した後、リストは次のようになります。

['a','b','d','e','g','h','j'] 

私はこれをどのように達成することができますか?

答えて

5

>>> x = ['a','b','c','d','e','f','g','h','i','j'] 
>>> [i for j, i in enumerate(x) if (j+1)%3] 
['a', 'b', 'd', 'e', 'g', 'h', 'j'] 

またを、あなたはリストのコピーを作成し、間隔で値を削除することができます。例:

>>> y = list(x) # where x is the list mentioned in above example 
>>> del y[2::3] # y[2::3] = ['c', 'f', 'i'] 
>>> y 
['a', 'b', 'd', 'e', 'g', 'h', 'j'] 
+0

ありがとうございます。私はこれらのことがかなりシンプルであることを知っていますが、私は2年後にもう一度Pythonを試しています。その基本的なリストの理解と索引付け、私はあまりにも錆びていると言わなければならない。 – EL323

+0

これは、 'StackOverflow'コミュニティが人々にサービスを提供している理由です。私はあなたを助けることができてうれしいです。 :) –

+1

@MoinuddinQuadri等間隔でアイテムを削除するための優れたテクニック。それを感謝する –

1
[v for i, v in enumerate(list1) if (i + 1) % 3 != 0] 

実際にインデックス2にあるリストの3番目のアイテムが消えたように思えます。これは、+1が対象です。あなたはenumerate()使用すること

関連する問題