假设我有一个列表x = [1,2,3]并且我想输出除索引值之外的所有其他值,是否有可以使用的列表操作?,即:x [0] => [2,3],x [1] => [1,3],x [2] => [1,2]?
答案 0 :(得分: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]
答案 1 :(得分: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'
答案 2 :(得分: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]
也是一个选项。
答案 3 :(得分:0)
>>> x = [1, 2, 3]
>>> x[:1] + x[2:]
[1, 3]
答案 4 :(得分:-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]
。
答案 5 :(得分:-2)
所以你想要除索引值之外的每个值: 我在哪里索引:
>>> 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根本不在该列表中。
答案 6 :(得分:-3)
彼此是
x[::2], start at 0
x[1::2], start at 1