列出python每隔一个值的切片

nmu*_*ukh -2 python slice

假设我有一个列表x = [1,2,3]并且我想输出除索引值之外的所有其他值,是否有可以使用的列表操作?,即:x [0] => [2,3] ,x [1] => [1,3],x [2] => [1,2]?

g.d*_*d.c 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]
Run Code Online (Sandbox Code Playgroud)


Jon*_*nts 5

您可以切片,但是我很想尝试:

a = [1, 2, 3]
b = a[:]
del b[1]
Run Code Online (Sandbox Code Playgroud)

编辑

上面的“技术上”确实使用了切片操作,该操作恰好是list实际上是浅拷贝的对象。

更灵活且不应有任何不利之处的是使用:

a = [1, 2, 3]
b = list(a)
del b[1]
Run Code Online (Sandbox Code Playgroud)

内置列表可用于任何迭代(切片操作[:]可用于列表或可索引的列表),因此您甚至可以将其扩展到以下结构:

>>> a = '123'
>>> b = list(a)
>>> del b[0]
>>> ''.join(b)
'23'
Run Code Online (Sandbox Code Playgroud)