我有一个列表,例如,如果我在列表上运行for
循环,我想要选择索引元素以外的所有元素。
例如,
var = [a,b,c,d,e]
1st iteration: Choose b,c,d,e and ignore a
2nd iteration: Choose a,c,d,e and ignore b
3rd iteration: Choose a,b,d,e and ignore c
and so on...
我尝试使用切片,但我无法对之前的元素有条件以及如何使用它们。
有人可以建议任何其他方法吗?
答案 0 :(得分:4)
使用List comprehension
的简单slicing
:
>>> [ var[:i]+var[i+1:] for i,_ in enumerate(var) ]
或者
>>> [ var[:i]+var[i+1:] for i in range(len(var)) ]
#driver values:
IN : var = [0, 1, 2, 3, 4]
OUT : [[1, 2, 3, 4], [0, 2, 3, 4], [0, 1, 3, 4], [0, 1, 2, 4], [0, 1, 2, 3]]
答案 1 :(得分:4)
这就像一个魅力:
var = [1, 2, 3, 4, 5]
for i in range(len(var)):
print(var[:i] + var[i+1:])
结果:
[2, 3, 4, 5]
[1, 3, 4, 5]
[1, 2, 4, 5]
[1, 2, 3, 5]
[1, 2, 3, 4]
答案 2 :(得分:3)
这应该有效:
[[v for j,v in enumerate(var) if i!=j] for i,_ in enumerate(var)]
答案 3 :(得分:3)
我只是在for循环中删除和插入list的元素
list1 = ['a','b','c','d','e']
for i in range(len(list1)):
temp=list1[i]
del list1[i]
print list1
list1.insert(i,temp)
<强>输出强>
['b', 'c', 'd', 'e']
['a', 'c', 'd', 'e']
['a', 'b', 'd', 'e']
['a', 'b', 'c', 'e']
['a', 'b', 'c', 'd']
答案 4 :(得分:1)
为什么不呢:
var = ['a','b','c','d','e']
for i in range(len(var)):
print([x for idx, x in enumerate(var) if idx != i])
哪个输出:
['b', 'c', 'd', 'e']
['a', 'c', 'd', 'e']
['a', 'b', 'd', 'e']
['a', 'b', 'c', 'e']
['a', 'b', 'c', 'd']