假设我有一个列表x = [1,2,3]并且我想输出除索引值之外的所有其他值,是否有可以使用的列表操作?,即:x [0] => [2,3] ,x [1] => [1,3],x [2] => [1,2]?
你可以用这个:
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)
您可以切片,但是我很想尝试:
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)
| 归档时间: |
|
| 查看次数: |
600 次 |
| 最近记录: |