-2

リスト x = [1,2,3] があり、インデックス付きの値以外のすべての値を出力したいとします。使用できるリスト操作はありますか? 例: x[0]=> [2,3] 、x[1] => [1,3]、x[2] =>[1,2] ?

4

7 に答える 7

5

あなたはこれを使うことができます:

def exclude(l, e):
  return [v for i, v in enumerate(l) if i != e]

>>> exclude(range(10), 3)
[0, 1, 2, 4, 5, 6, 7, 8, 9]
于 2012-12-03T15:29:59.330 に答える
5

あなたはスライスでそれをすることができます、しかし私は試みたくなります:

a = [1, 2, 3]
b = a[:]
del b[1]

編集

上記は「技術的に」スライス操作を使用します。これはlist、実際には浅いコピーであるオブジェクトに対して発生します。

より柔軟で、欠点がないはずのことは、次を使用することです。

a = [1, 2, 3]
b = list(a)
del b[1]

組み込みのリストは任意の反復可能で機能するため(スライス操作[:]はリストまたはインデックス可能なリストで機能します)、次のような構成に拡張することもできます。

>>> a = '123'
>>> b = list(a)
>>> del b[0]
>>> ''.join(b)
'23'
于 2012-12-03T15:31:00.480 に答える
1

使用できますx[:i] + x[i+1:]

In [8]: x = [1, 2, 3]

In [9]: i = 0

In [10]: x[:i] + x[i+1:]
Out[10]: [2, 3]

コンテキストによっては、x.pop(i)役立つ場合もあります。要素を削除して返すことにより、リストを適切に変更しi-thます。要素が必要ない場合はdel x[i]、オプションもあります。

于 2012-12-03T15:28:33.527 に答える
0
>>> x = [1, 2, 3]
>>> x[:1] + x[2:]
[1, 3]
于 2012-12-03T15:28:06.973 に答える
-1
my_list  = [1, 2, 3]
my_list.remove(my_list[_index_]) #_index_ is the index you want to remove

そのようなもの: my_list.remove(my_list[0])would yield [2, 3], my_list.remove(my_list[1])would yield [0, 3], and my_list.remove(my_list[2])would yield [1, 2].

于 2012-12-03T16:15:15.087 に答える
-2

したがって、インデックス付きの値を除くすべての値が必要です。ここで、i はインデックスです。

>>> list = [1,2,3,4,5,6,7,8]
>>> [x for x in list if not x == list[i]]

これにより、 it 要素のインスタンスがないリストが得られます。たとえば、次のようになります。

>>> i = 2
>>> list = [1,2,3,4,5,6,7,1,2,3,4,5,6,7]
>>> [x for x in list if not x == list[i]]
[1, 2, 4, 5, 6, 7, 1, 2, 4, 5, 6, 7]

3 がそのリストにまったく含まれていないことに注意してください。

于 2012-12-03T15:28:29.840 に答える
-3

お互いが

x[::2], start at 0
x[1::2], start at 1
于 2012-12-03T15:27:13.583 に答える