假设我有一个列表 x = [1,2,3] 并且我想输出除索引之外的所有其他值,是否可以使用列表操作?即:x[0]=> [2,3] , x[1] => [1,3], x[2] =>[1,2] ?
问问题
710 次
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])
会屈服[2, 3]
,
my_list.remove(my_list[1])
会屈服[0, 3]
,
my_list.remove(my_list[2])
会屈服[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]]
这将为您提供一个没有 i't 元素实例的列表,例如:
>>> 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
Every other is
x[::2], start at 0
x[1::2], start at 1
于 2012-12-03T15:27:13.583 回答