如何选择除索引元素之外的列表的不同元素?

时间:2018-01-17 15:19:46

标签: python

我有一个列表,例如,如果我在列表上运行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...

我尝试使用切片,但我无法对之前的元素有条件以及如何使用它们。

有人可以建议任何其他方法吗?

5 个答案:

答案 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']